算法设计与编程 小明的幸运数 水题简单一次过

88 阅读1分钟

赛氪OJ-专注于算法竞赛的在线评测系统 (saikr.com)

刚开始这样写的,结果是:

#include<bits/stdc++.h>
using namespace std;
int k,l,r; 
int sum;
int cnt[1010];
int main()
{
	cin>>k>>l>>r;;
	for(int i=l;i<=r;i++)
	{
		// 个位数为k 
		if(i%10==k)  sum+=i;
		if(i%k==0)  sum+=i;//k的倍数 
	}
	cout<<sum<<endl;
	return 0;
}

image.png

把i打印出来看一下,发现是没去重,去一下重就可以了:

image.png

去重

#include<bits/stdc++.h>
using namespace std;
int k,l,r; 
int sum;
int cnt[1010];
int main()
{
	cin>>k>>l>>r;;
	for(int i=l;i<=r;i++)
	{
		// 个位数为k 
		if(i%10==k)
		{
			cnt[i]=1;
			//cout<<"i: "<<i<<endl;
			sum+=i;
		}
		if(i%k==0) 
		{
			if(cnt[i]==0)
			{
			   //cout<<"i: "<<i<<endl;
		      sum+=i;//k的倍数 
			}
	    }
	}
	cout<<sum<<endl;
	return 0;
}

image.png