c++ 趣味小程序
2016-04-26 14:23
274 查看
1、高次方数的尾数
求13 的13 次方的最后三位数
解本题最直接的方法是:将13 累乘13 次方截取最后三位即可。但是由于计算机所能表示的整数范围有限,用这种“正确”的算法不可能得到正确的结果。事实上,题目
仅要求最后三位的值,完全没有必要求13 的13 次方的完整结果。研究乘法的规律发现:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关
利用这一规律,可以大大简化程序。
#include<iostream>
using namespace std;
int main()
{
int x,y;
cin>>x>>y;
int sum=0;
if(y==1)
{
cout<<x%1000<<endl;
}
else
{
int last=x%1000;//记录最后三位
for(int i=1;i<y;i++)
{
sum=last*x;
last= sum%1000;
}
cout<<last<<endl;
}
return 0;
}
2、阶乘尾数零的个数
100!的尾数有多少个零?
可以设想:先求出100!的值,然后数一下末尾有多少个零。事实上,与上题一样,由于计算机所能表示的整数范围有限,这是不可能的。为了解决这个问题,必须首先从数学上分析在100!
结果值的末尾产生零的条件。不难看出:一个整数若含有一个因子5 ,则必然会在求100!时产生一个零。因此问题转化为求1 到100 这100 个整数中包含了多少个因子5 。若整数N 能被25 整除,则N 包含2 个因子5 ;若整数N 能被5 整除,则N 包含1 个因子5 。
#include<iostream>
using namespace std;
int main()
{
int n=0;
cin>>n;
int num=0;
for(int i=5;i<=n;i++)
{
if(i%5==0)num++;
if(i%25==0)num++;
}
cout<<num<<endl;
return 0;
}
3、
求13 的13 次方的最后三位数
解本题最直接的方法是:将13 累乘13 次方截取最后三位即可。但是由于计算机所能表示的整数范围有限,用这种“正确”的算法不可能得到正确的结果。事实上,题目
仅要求最后三位的值,完全没有必要求13 的13 次方的完整结果。研究乘法的规律发现:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关
利用这一规律,可以大大简化程序。
#include<iostream>
using namespace std;
int main()
{
int x,y;
cin>>x>>y;
int sum=0;
if(y==1)
{
cout<<x%1000<<endl;
}
else
{
int last=x%1000;//记录最后三位
for(int i=1;i<y;i++)
{
sum=last*x;
last= sum%1000;
}
cout<<last<<endl;
}
return 0;
}
2、阶乘尾数零的个数
100!的尾数有多少个零?
可以设想:先求出100!的值,然后数一下末尾有多少个零。事实上,与上题一样,由于计算机所能表示的整数范围有限,这是不可能的。为了解决这个问题,必须首先从数学上分析在100!
结果值的末尾产生零的条件。不难看出:一个整数若含有一个因子5 ,则必然会在求100!时产生一个零。因此问题转化为求1 到100 这100 个整数中包含了多少个因子5 。若整数N 能被25 整除,则N 包含2 个因子5 ;若整数N 能被5 整除,则N 包含1 个因子5 。
#include<iostream>
using namespace std;
int main()
{
int n=0;
cin>>n;
int num=0;
for(int i=5;i<=n;i++)
{
if(i%5==0)num++;
if(i%25==0)num++;
}
cout<<num<<endl;
return 0;
}
3、
相关文章推荐
- C 语言中指针、字符串与数组的一些关系
- c语言 #define 中的UL
- extern "C" c++如何实现函数的重载
- C++多态性
- C++封装继承多态总结
- C++多维数组
- 1054. 求平均值 (20)
- C/C++中的sizeof
- C++数组
- js to c++!鼠标点击事件!
- C++纯虚函数
- C/C++复习:高于均分的学生(结构体)
- C/C++复习:向量的数量积
- C/C++复习:点坐标(结构体)
- C++非模态对话框自动销毁的好方法
- C/C++复习:成绩统计(结构体)
- 使用ROS的cpp客户端库写程序
- c++ 继承、多态——c++复习(三)
- C/C++复习:小数计算(结构体)
- C/C++复习:学生信息的输出(结构体)