例题2-1  aabb

输出全部形如aabb的四位全然平方数(即前两位数字相等,后两位数字也相等)

#include <stdio.h>
#include <stdlib.h>
#include <math.h> int main(int argc, char *argv[])
{
int i, j, n;
double m;
for(i = 1; i <= 9; i++)
for(j = 0; j <= 9; j++)
{
n = i*1100 + j*11;
//n = (i*10+i)*100 + j*10 + j;
m = sqrt(n);
if(floor(m+0.5) == m) printf("%d\n", n);
}
system("PAUSE");
return 0;
} int main(int argc, char *argv[])
{
int x, y;
for(x = 33; x*x <= 9999; x++)
{
y = x*x;
if(y/1000 == y/100%10 && y/10%10 == y%10)
printf("%d\n", y);
}
system("PAUSE");
return 0;
}

总结:1 一组逆向的思维解决同一个问题

2 用变量n = a*1100 + b*11来储存四位数

3 浮点运算会存在误差。在进行浮点数误差时,应考虑到浮点误差  如 floor(m+0.5) == m

例题2-2 3n+1问题  
猜想:对于随意大于1的自然数n。若n为奇数,则将n变成3n+1。否则变成一半  
经过若干次这种变换。一定会使n变成1.比如3->10->5->16->8->4->2->1 输入n,输出变换的次数。 n≤10^9.  例子输入:3  例子输出:7  
#include <stdio.h>
#include <stdlib.h> int main(int argc, char *argv[])
{
unsigned n, count = 0;
scanf("%d", &n);
while(n > 1)
{
if(n % 2 == 1) { n = n + (n+1)/2; count += 2; continue;}
else n >>= 1 ;
count++;
}
printf("%d\n", count); system("PAUSE");
return 0;
}

总结:1  3n+1会溢出

            2 一个暂时的解决方式是:由于n为奇数事3*n+1一定是偶数,下一步将其立马除以2.假设将两次操作一起做,能够在一定程度上缓解这个问题。

有兴趣的读者能够试一                 试。程序特点,要善于发现。

            3  除以2 用右移操作

4 (3n+1)/2不如写做 n + (n+1)/2,降低溢出的可能

例题2-3 阶乘之和

输入n,计算S=1!+2!+3!+……+n!的末6位(不含前导0),n≤10^6

#include <cstdlib>
#include <stdio.h> int main()
{
const int MOD = 1000000;
int n;
long long sum = 0, tem = 1;
scanf("%d",&n); for (int i=1; i<=n; i++)
{
tem = tem*i%MOD ;
sum = (sum+tem)%MOD;
}
printf("%d\n",sum); system("PAUSE");
return EXIT_SUCCESS;
}

总结:1 算术溢出,用每步除MOD的方式来解决

            2 本题特性,当n>25时。结果就不变了,善于发现题目特点


最新文章

  1. 非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法
  2. 利用excel拆分数据
  3. andorid 自定义seekbar
  4. javascript onload队列
  5. web响应式之bootstrap的基础用法。
  6. Learning WCF Chapter2 Service Description
  7. Android中为APP创建快捷方式的原理(自己的理解)
  8. Android获得线性渐变某点的颜色
  9. INNO setup 制作安装包
  10. asp.net mvc 上传附件验证
  11. 移植python笔记
  12. Vasya and Basketball CodeForces - 493C
  13. python学习第四次笔记
  14. Android开发点滴 - 如何使按钮水平垂直居中且始终占据屏幕宽度一半
  15. Properties属性操作
  16. Android-SQLiteOpenHelper
  17. 产生随机数 random
  18. jfinal如何调用存储过程?
  19. vue axios配置 发起请求加载loading请求结束关闭loading
  20. Appium获取安卓页面toast(java版)

热门文章

  1. python 46 盒模型 与盒模型布局
  2. 安装Windows服务,一直提示系统正在关机的错误。
  3. 使用pelican创建静态博客
  4. OpenCV向JNI层的参数转换
  5. 【汇编】MASM6.15几个简单的汇编程序
  6. 【sqli-labs】 less24 POST- Second Order Injections *Real treat* -Stored Injections (POST型二阶注入 *真的好玩?* 存储注入)
  7. 编程领域中的 &quot;transparent&quot; 和 &quot;opaque&quot;
  8. 我所理解的monad(4):函子(functor)是什么--可把范畴简单的看成高阶类型
  9. React-Router ---withRouter
  10. python 爬取妹子