C++自守数判断

题目描述: 一个数的平方的“尾数”含有本身的话,那么称这个数为自守数,如:
25^2=625, 625尾数为25,那么25为自守数,
76^2=5776, 5776的尾数为76,那么76为自守数,
376^2=141376,14376的尾数为376,那么376为自守数(注意对尾数的理解)
## input:0到1000这样的数
#思路一:循环控制,取余数比较,相等则输出,关键问题是余数取到第几位停止
举个例子:25^2=625,怎样控制才取两位余数呢?
376^2=141376,取三位?
拿25^2=625来说,只需将25转为string型,记为s1=“25”,再用625%pow(10,s1.size())得到的数和25比较

#include #include #include using namespace std; int main(){ for(int i=1; i<=1000; i++){ int sum1=pow(i,2); string s1=to_string(i); int h=pow(10,s1.size()); if(sum1%h==i){ cout<

#思路二:直接转化为字符串进行比较
#include #include #include using namespace std; int main(){ for(int i=1; i<=10000; i++){ int sum1=pow(i,2); string s1=to_string(sum1); string s2=to_string(i); auto m1=s1.size(); auto m2=s2.size(); if(s1.compare(m1-m2,m1,s2,0,m1)==0){ cout<<

#思路三:你能看懂算我输?
#include #include #include using namespace std; bool ZiShou(int num){ int sum1=pow(num,2); int sum2=0; int i=0; bool zishou=false; while(sum1){ int yu=sum1%10; sum2+=yu*pow(10,i); i++; sum1/=10; if(sum2==num){ zishou=true; break; }else if(sum2>num){ break; } } return zishou; } int main(){ for(int i=1; i<10000; i++){ if(ZiShou(i)){ cout<

【C++自守数判断】#答案:
C++自守数判断
文章图片

欢迎在评论区留言讨论,如果觉得写的不错,那就请关注一下吧?

    推荐阅读