//來自kuangbin的acm模板
//大整數約數和
/*poj 1845 sumdiv
求a^b的所有約數之和%9901
*//*
大整數的約數和 三個問題
1.約數和結論-對於乙個大整數n,他的因數分解式為 ( a1^x1 ) * ( a2 ^ x2) * (a3^x3 )... ,那麼約數和 sum = ( 1 + a1 + a1^2 + ... a1^x1 ) * ( 1 + a2 + a2^2 + ... a2^x2 ) * ...
2.等比數列和的遞迴表示式:
1 + p + p^2 + p^3 +...+ p^n
= (n為奇數時,一共有偶數項)(1 + p + p^2 +...+ p^(n/2)) * (1 + p^(n/2+1))
= (n為偶數時,一共有奇數項)(1 + p + p^2 +...+ p^(n/2-1)) * (1+p^(n/2+1)) + p^(n/2)
3.因數分解
*/ #include
#include
#include
#include
#include
using namespace std;
#define mod 9901
//******************************************
//素數篩選和合數分解
const int maxn=10000;
int prime[maxn+1];
void getprime()
}}long long factor[100][2];
int fatcnt;
int getfactors(long long x)
fatcnt++;}}
if(tmp!=1)
return fatcnt;
}//******************************************
long long pow_m(long long a,long long n)//快速模冪運算
n>>=1;
tmp*=tmp;
tmp%=mod;
}return res;
}//計算1+p+p^2+````+p^n , 計算等比數列的和對mod取模演算法
//等比數列和的遞迴運算,複雜度o(logn * logn)
//還可以使用等比數列和公式求解,此處使用等比數列的遞推公式求解
long long sum(long long p,long long n)
else
return ((1+pow_m(p,n/2+1))%mod*sum(p,n/2-1)+pow_m(p,n/2)%mod)%mod;
}int main()
printf("%i64d\n",ans);
}return
0;}
//hdu6069
//大整數約數的個數
//大整數約數個數結論:對於大整數n的因數表示式 n = x1^a1 * x2^a2 ...xn^an
//他的約數的個數是sum = ( 1 + a1 ) *(1 + a2 ) ... ( 1 + an )
//本題還要注意因數分解的方法,認識到給定的資料範圍的特殊性,就是對於1e6以外的數,他要麼是質數,要麼他是1e6以內的質數的冪積和1e6以外的乙個質數的冪積,不可能是1e6以外的兩個質數的冪積,因為那樣一定超過1e12.同時因為l和r的間隔不大於1e6,可以考慮大區間求質數的方法進行因數分解
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std ;
const
int maxn = 1e6 +10 ;
const
int maxm = 1e6 ;
typedef
long
long ll ;
const ll mod = 998244353 ;
bool notprime[maxn] ;
ll prime[maxn] ;
void getprime()
}ll l , r , k , ans ;
ll dp[maxn] ;
ll sp[maxn] ;
void solve()
for(ll i = 0 ; i< r-l + 1 ;i++)
memset( sp , -1 , sizeof( sp )) ;
for( ll i = 1 ;i<= prime[0] && prime[i] <= r ;i++)
*/
ll pos = ( ll ) j * prime[i] - l ;
while( dp[pos] % prime[i] == 0 )
if( sp[pos] == -1)
else
// cout<}}}
}int main()
}
printf("%lld\n" , ans % mod);
}return
0 ;}
大整數問題
題目描述 有乙個k 1 k 80 位的十進位制正整數n,設計乙個程式,找到滿足條件 p3 p2 3p n的p的最大值。測試用例 輸入 1000000000000001000000000000003000000000000001 輸出 100000000000000 複製 include includ...
大整數 問題
高精度除法 利用了 減法 原理 例如 a 13455 除以 b 3 先把 3 增大為 30000 不夠減 右移一位 變為 3000 這樣不斷的減 直到 不夠減 為 1456 則 可知 商的 千位 為 4 因為 3000 是 3 的 1000倍 這樣 3000 在右移一位 300 依此類推 得到 百位...
大整數相乘問題
先把好的部落格貼上 明天再說。include include includeusing namespace std string型別轉換成int型別 long string to num string str 整形數轉換為string型別 string num to string int intva...