• c++ 趣味小程序


    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、

  • 相关阅读:
    C#Light v0.007 又一次重大更新
    BeanFactory和FactoryBean
    java中四种引用类型
    JVM内存区域模型
    无锁算法CAS 概述
    线程安全性
    进程与线程的区别
    hadoop 错误处理机制
    hadoop 任务执行优化
    Hadoop的调度器总结
  • 原文地址:https://www.cnblogs.com/honeybusybee/p/5434970.html
Copyright © 2020-2023  润新知