題目:
假設現在有兩個自然數a和b,s是abab的所有約數之和。
請你求出s mod 9901的值是多少。
輸入格式
在一行中輸入用空格隔開的兩個整數a和b。
輸出格式
輸出乙個整數,代表s mod 9901的值。
資料範圍
0≤a,b≤5×1070≤a,b≤5×107
輸入樣例:
2 3
輸出樣例:
15
注意: a和b不會同時為0。
解題報告:由於a,b,都非常地大,咱們不可能直接去求解a^b,所以應該使用一下中學階段學的冪次的性質,a=(a*b*c)
那麼a^b=(a*b*c)^b=a^b*b^b*c^b。然後咱們分別去求解每個素因子的約數和,這裡涉及了一下基性函式,每個素因子的求和的乘積=所有因子的加和。在求解每個素因子的和的時候,使用了一下等比數列求和,單獨寫了乙個遞迴函式去求解的。
ac**:
#includeusing namespace std;
typedef long long ll;
const int mod=9901;
int ksc(int a,int b)
return res;
}int ksm(int a,int b)
return res;
}int sum(int p,int k)
int main()
if(s>0)
res=(res*sum(i,s*b))%mod;
} if(a==0)
res=0;
cout<}
poj1845 質因數分解 等比數列求和
題意 求a b約數之和。分析 首先可以講a分解質因數 a p1 a1 p2 a2 p3 a3 pn an 則a b p1 a1 b p2 a2 b pn an b a b的所有約數之和sum 1 p1 p1 2 p1 a1 b 1 p2 p2 2 p2 a2 b 1 pn pn 2 pn an b ...
質因數分解(C )(求最小質因數反求最大質因數)
p1075 質因數分解 題目描述 已知正整數nn是兩個不同的質數的乘積,試求出兩者中較大的那個質數。輸入格式 乙個正整數nn。輸出格式 乙個正整數pp,即較大的那個質數。輸入輸出樣例 輸入 21 輸出 7 說明 提示 n 2 10 9 noip 2012 普及組 第一題 直接找最大質因數會超時,所以...
面試題 求質因數分解
題目 求乙個數的質因數分解,比如輸入90,輸出2 3 3 5。解體思路 要求乙個數n的質因數分解,首先求出n以內的所有質數,將其放入prime陣列內,然後再讓prime i 去除n,如果能夠整除,那麼這個prime i 就是n的質因數,否則不是。求prime的方法是篩法求素數。實現 include ...