Manchester


私信TA

用户名:wenyajie

访问量:332081

签 名:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

等  级
排  名 1
经  验 65548
参赛次数 1
文章发表 188
年  龄 0
在职情况 学生
学  校 Xiamen University
专  业 计算机科学

  自我简介:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

解题思路:
对于每一个数 i,求出它的位数,用平方积%(int)pow(10,位数)得到尾数;

尾数与 i 比较,相同则输出;
参考代码:

#include<stdio.h>
#include<math.h>

int main()
{

long long S;  //存放平方
int len,ii;   //i的位数,和i的备份值

for(int i=0;i<=200000;i++)
{
   len=1;ii=i;   
   S=pow(i,2);

  while(ii>=10)    //求i的位数
  {
   ii/=10;
   len++;
  }

 if(S%(int)pow(10,len)==i)  //取尾数,看是否等于i
  printf("%d  ",i);
}
return 0;
}

别忘点赞哦-.-

 

0.0分

28 人评分

  评论区

请问末尾无空格的问题怎么解决啊
2021-11-05 15:49:14
#include <stdio.h>
#include <math.h>

int main()
{
	int i,t;
	int j,cnt;
	long long m,r,s;
	
	for( i=0;i<=200000;i++ ){
		cnt = 0;
		t = i/10;
		while( t!=0 ){
			cnt ++;
			t /=10;
		}
		m = pow(i,2)-i;
		r = m;
		for( j=0;j<=cnt;j++ ){
			m /=10;
		}
		s = m;
		for( j=0;j<=cnt;j++ ){
			s *=10;
		}if( r==s ){
			printf("%d ",i);
		}	
	}
	
    return 0;
}
格式错误0
2020-07-14 19:19:03
将pow(i,2)换成i*i是不行的,求解答。。。
2020-03-04 20:48:26
我的这个因为int长度得关系,到一定数值之上就是输出错误了,看大佬们有办法修正吗?
#include<stdio.h>
int main()
{
	int i,s,v;
	printf("0  1");
	for(i=4;i<200001;i++){
		s=i*i-i;
		if(i<10)v=10;
		else if(i<100)v=100;
		else if(i<1000)v=1000;
		else if(i<10000)v=10000;
		else if(i<100000)v=100000;
		else if(i<200000)v=1000000;
		if(s%v==0){
			printf("  %d",i);
		}
	}
	return 0;
}
2020-03-03 21:55:27
为什么我把S=pow(i,2)改为S=i*i,结果就不一样了
2019-10-01 16:55:54
又学到了
2019-09-17 09:06:50
最后一个数的末尾无空格,你这个末尾有空格吧?
2019-05-03 20:13:08
思路很清晰,很有帮助
2018-11-19 10:28:27