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++自守数判断】#答案:
文章图片
欢迎在评论区留言讨论,如果觉得写的不错,那就请关注一下吧?
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- 画解算法(1.|画解算法:1. 两数之和)
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- opencv|opencv C++模板匹配的简单实现
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- 2021/1/15|2021/1/15 数幸福
- 数组常用方法一
- 最喜6.8.9