1.例题aabb
输出
所有形如aabb的4位完全平方数
分析:
方案1.判断a*1100+b*11是不是完全平方数(枚举a和b)
方案2.判断4位完全平方数是否满足aabb形式(枚举1000到9999中的完全平方数)
代码:
#include<stdio.h>
#include<math.h>
int main()
{int a,b;for(a=1;a<=9;++a){for(b=0;b<=9;++b){int n=a*1100+b*11;if(sqrt(n)==(int)sqrt(n))printf("%d",n);}}
}
#include<stdio.h>
#include<math.h>
int main()
{int a,b;for(int x=1;;x++){int n=x*x;if(n<1000) continue;if(n>9999) break;if(n%10==n/10%10&&n/100%10==n/1000) printf("%d",n);}
}
2.计时器
#include<stdio.h>
#include<time.h>
int main(){const int mod=1000000;int n,s=0;scanf("%d",&n);for(int i=1;i<=n;i++){int factorial=1;for(int j=1;j<=i;j++){factorial=(factorial*j%mod);//输出对1e6取模}s=(s+factorial)%mod; }printf("%d\n",s);printf("time used = %.2f\n",(double)clock()/CLOCKS_PER_SEC);return 0;
}
clock:计时函数该函数返回程序目前为止运行的时间,返回CPU时钟计时单元(clock tick)数(挂钟时间),返回单位是毫秒。
CLOCKS_PER_SEC:这个常量表示每一秒(per second)有多少个时钟计时单元
时间除以这个常数,得到的值以秒为单位。
从25开始答案始终不变,因为:
25!末尾有六个零,所以从第25项开始,后面的所有项(末尾都是六个零)都不会影响和的末六位数字(前24项造成的),所以当n大于25,即可终止,这样效率和溢出都不存在问题