Lightoj1028 欧拉函数
2017-02-05 14:59
253 查看
题意
一个十进制数1≤n≤1012,现在用base进制来表示,问有多少种表示方法使得最后一位上的数为0?等同于求出n有多少种约数,即n%base==0;
思路
开始想的是枚举sqrt内的数,TLE了,因为有10000组数据。。。。有一个表达式x=px11∗px22∗px33...其中pi是素数,xi为正整数,这样我们就能算出约数的个数了。。。
answer=(x1+1)∗(x2+1)∗...−1
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int nCase = 0; const long long maxn = 1e6 + 10; long long prime[maxn]; bool vis[maxn]; //prime[0]记录素数的个数,素数从prime[1]开始存 inline void init() { memset(vis, false, sizeof vis); for (long long i = 2;i < maxn;++i) { if (!vis[i]) { for (long long j = i * i;j < maxn;j += i) vis[j] = true; prime[++prime[0]] = i; } } } int main(int argc, const char * argv[]) { // freopen("/Users/jamesqi/Desktop/in.txt","r",stdin); // freopen("/Users/jamesqi/Desktop/out.txt","w",stdout); // ios::sync_with_stdio(false); // cout.sync_with_stdio(false); // cin.sync_with_stdio(false); init(); int kase;cin >> kase; while(kase--) { long long n;cin >> n; long long ans = 1; long long num = n; for (int i = 1;i <= prime[0] && prime[i] * prime[i] <= num;++i) { if (num % prime[i] == 0) { int temp = 0; while(num % prime[i] == 0) { ++temp; num /= prime[i]; } ans *= (temp + 1); } } // ans *= 2; if (num > 1) ans *= 2; // ans *= (1 + 1); //ans - 1 because of the basic number 1 printf("Case %d: %lld\n", ++nCase, ans - 1); } // showtime; return 0; }
相关文章推荐
- lightoj 1028 - Trailing Zeroes (I) 欧拉函数
- Lightoj1007【欧拉函数-素数表】
- LightOJ1370_Bi-shoe and Phi-shoe_伪欧拉函数,真素数筛
- 【LightOJ1370】Bi-shoe and Phi-shoe(欧拉函数)
- LightOj1007 - Mathematically Hard(欧拉函数)
- LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数+打表)
- LightOJ 1370(欧拉函数)
- Lightoj 1370 Bi-shoe and Phi-shoe(欧拉函数)
- LightOJ 1370 Bi-shoe and Phi-shoe (欧拉函数+二分)
- LightOJ - 1370 Bi-shoe and Phi-shoe (欧拉函数,素数打表)
- 【LightOJ1370】Bi-shoe and Phi-shoe(欧拉函数)
- 【欧拉函数】Bi-shoe and Phi-shoe【LightOJ1370】------长篇阅读专场D题
- lightoj 1028 xjb组合
- LightOJ 1028 Trailing Zeroes (I)
- lightoj1035 欧拉函数(暴力)
- lightoj-1370 Bi-shoe and Phi-shoe( 欧拉筛 求 欧拉函数)
- 【LightOJ】1370 - Bi-shoe and Phi-shoe(欧拉函数,素数打表)
- LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数)
- LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数)
- LightOJ1007---Mathematically Hard (欧拉函数)