zoukankan      html  css  js  c++  java
  • ACM课内练习_1

    题意很简单就是一个一个素数因子只有2,3,5,7的整数,让你求它的约束的个数(暴力会超时),一开始的思路是先计算2,3,5,7这四个素数因子的个数,求出来之后想了很久没有想出他们个数和约束个数之间的数学关系,后来看了别人的代码,自己画了张图分析了一下,将2,3,5,7的个数全部加上1之后的四个数的乘积就是约数的个数(可以画棵树分析一下)

    例如:12=2*2*3 

    1.从根部1出发,两个素因数2,所以有三种可能

    一个二都不乘: 1

    乘一个二: 2

    乘两个二: 4

    2.然后从 1,2,4 出发 ,有6种可能

    1,2,4每个两种,要么保持原来的值不变,要么乘以3

    也就是1,3 2,6 4,12 这六种情况

     1  while (scanf("%I64d", &n), n)
     2     {
     3         Int num[4] = {2, 3, 5, 7};
     4         int ans[4] = {1, 1, 1, 1};//由在算的时候没有把0个2,0个3,0个5或者0个7的情况计算进去,所以一开始就加上
     5         for (int i = 0; i < n; i++)
     6         {
     7             while (n != 1 && n % num[i] == 0)//算出2,3,5,7的个数
     8             {
     9                 ans[i]++;
    10                 n /= num[i];
    11             }
    12         }
    13         printf("%d
    ", ans[0] * ans[1] * ans[2] * ans[3]);
    14     }

    链接:https://blog.csdn.net/weixin_42165786/article/details/80318236

  • 相关阅读:
    下拉框插件开发 (一)
    工厂模式 抽象工厂模式
    闭包 构建函数 简单工厂模式
    js继承
    浅谈js观察者模式
    浅谈js单例模式
    localstorage本地存储
    Vi 配置文件
    Vi Command
    我的Firs博客
  • 原文地址:https://www.cnblogs.com/NiBosS/p/12059385.html
Copyright © 2011-2022 走看看