学习小结
来源:互联网 发布:聂士成 知乎 编辑:程序博客网 时间:2024/06/13 16:36
例程:
#include <stdio.h>
int main()
{
long int i;
int j;
int k;
long int m;
int n;
int cont = 1;
long int l = 1;
int a [ 6 ];
int b [ 6 ];
long int c [ 6 ];
for(i = 200000; i >=0 ; i--)
{
m = i;
for( cont = 0; m != 0; cont++)
m = m/10;
m = i;
for( j = 0,k = 100000; j<6 ; j++)
{
a [ j ] = m/k;b [ j ] = a [ j ];
m = m%k;
k = k/10;
}
c [ 0 ] = (a [ 0 ]*100000+a [ 1 ]*10000+a [ 2 ]*1000+a [ 3 ]*100+a [ 4 ]*10+a [ 5 ])*b [ 5 ];
c [ 1 ] = (a [ 1 ]*10000+a [ 2 ]*1000+a [ 3 ]*100+a [ 4 ]*10+a [ 5 ]*1)*(b [ 4 ]*10);
c [ 2 ] = (a [ 2 ]*1000+a [ 3 ]*100+a [ 4 ]*10+a [ 5 ]*1)*b [ 3 ]*100;
c [ 3 ] = (a [ 3 ]*100+a [ 4 ]*10+a [ 5 ]*1)*b [ 2 ]*1000;
c [ 4 ] = (a [ 4 ]*10+a [ 5 ]*1)* b [ 1 ]*10000;
c [ 5 ] = a [ 5 ]*b [ 0 ]*100000;
for( j = 0,l = 1; j<cont; j++)
l *= 10;
n = (c [ 0 ]+c [ 1 ]+c [ 2 ]+c [ 3 ]+c [ 4 ]+c [ 5 ])%l;
if(n == i)
printf("%d ",i);
}
}
此题求200000以内的自守数(一个数的平方的尾数等于该数自身的自然数)
第一次尝试时使用了求一个数的平方再求取尾数,无法求出。查看多次无效后,书上说数值过大,计算机无法显示。
将其删除,以之前高次方求尾数的方法计算,发现最后一位正确,然而其他位数仍不满足要求。
再计算多组数据后,发现最后一位是俩数最后一位乘积的个位,之前则是各位位数乘以一样位数加上之前进位。
再次编译后,结果出现乱码,反复检查后查出
m = i;
for( cont = 0; m != 0; cont++)
m = m/10;
m = i;
for( j = 0,k = 100000; j<6 ; j++)
{
a [ j ] = m/k;b [ j ] = a [ j ];
m = m%k;
k = k/10;
}
此段中第一次调用了m后并没有将其恢复为初值i,在编译后发现只有三位自守数才有效。发现只设了三位,再修改,加入一个cont计算位数,终于成功。
在写代码时一定要注意数据长度和位数是我今天最大的收获。
0 0
- [学习小结]Ajax小结
- 面试小结 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- 学习小结
- python 命令行:help(),'more'不是内部或外部命令,也不是可运行的程序或批处理文件
- rownum用法
- 我的JAVA学习之路
- 打造高效的 windows 操作系统
- Mysql学习笔记十一——建表及建表综合案例练习
- 学习小结
- 最大值次大值
- 今日头条面试算法题——确定ABCDE五个学校名次
- Day01-学习第一天
- Centreon监控主从配置
- Android7.0之从零开始:Intent及IntentFilter
- 搭建自动化框架selenium+java+testng
- ab压力测试
- C#读网卡MAC地址-WMI方法