2015年蓝桥杯省赛c组填空题 立方尾不变 知识点:字符串,拆位

83 阅读1分钟

1.立方尾不变 - 蓝桥云课 (lanqiao.cn)

思路

先把i和i的立方和都转换为字符串,然后再从尾部开始比较 image.png

也可以用分位的思想

#include <iostream>
#include <string>
using namespace std;
long long sum;
int ans;
int main()
{
	for(int i=0;i<10000;i++)
	{
		sum=i*i*i;
		if(i<10)
		{
				if(sum%10==i)ans++;
		}
		
		else if(i<100)	
		{
				if(sum%100==i)ans++;
		}	
			
		else if(i<1000)
		{
				if(sum%1000==i)ans++;
		}
			
		else if(i<10000)
		{
			if(sum%10000==i)ans++;
		}
				
	}
	cout<<ans;
	return 0;
}

注意,如果我的i开int类型,得到的答案是28

image.png

如果开long long类型得到的答案就是37,37是正确答案。 image.png

错误原因 image.png

可以改成下面这样的:

image.png