CodeForces - 1068B —— 数论

一、题面

 

二、题解

可以通过找规律来简化程序,举个栗子,当b=60,此时有三种情况:

  1. a是b的因子,结果为b的因子
  2. a与b互质,结果为60
  3. a不是b的因子也非互质,结果为b的因子

而且由于a的取值会遍历1到60的每个数,因此,总结一下规律即:

结果=b的因子个数

 

三、实现细节

根据因子的对称性利用根号降低运算次数

添加0.0转化浮点数避免sqrt函数的出错

define long long 类型避免溢出

 

四、实现代码

#include 
#include 

using namespace std;

#define ll long long

int main()
{
    ll b;
    ll Count=0;
    ll i=1;
    cin>>b;

    while(i

 

你可能感兴趣的:(ACM刷题)