刚开始看到,想到是反素数,还有点小鸡冻。。。然而结局是悲伤的T^T,没想到第一篇博客居然是未AC的。。。先留个坑 好吧,发现错误了!!! #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define rep(i,n) for(int i=0; i MAXV * 1.0) return -1; res = res * (n + i) / i; // 总觉得中间过程还是有可能溢出。。。。 /* 这里2B了,可能两个都不能整除,但相乘后可以 if((n + i) % i == 0) { int tmp = (n + i) / i; res = res * tmp; } else { res = res / i; res = res * (n + i); }*/ } return res; } void dfs(ull res,int k,int sum,int lim,ll n) { if(res >= ans) return; if(1 == n) { ans = res; return; } ll mul = 1,tmp = 1,ss; for(int i=1; i<=lim; i++) { if(mul * 1.0 * pri[k] > MAXV * 1.0) break; mul *= pri[k]; if(res * 1.0 * mul > MAXV * 1.0) break; if((tmp = Judge(sum,i)) == -1) break; if(n % tmp != 0) continue; dfs(res * mul,k+1,sum+i,i,n / tmp); } } int main() { //freopen("out.txt","w",stdout); Prime(); MAXV = 1; MAXV = (MAXV << 63) - 1; while(cin>>n) { ans = MAXV; if(n == 1) ans = 2; else dfs(1,0,0,64,n); cout<