CodeForces 66 D.Petya and His Friends(构造+数论+高精度)
来源:互联网 发布:客管家软件好用吗 编辑:程序博客网 时间:2024/04/30 18:31
Description
要求构造一个长度为
Input
一个正整数
Output
如果存在满足条件的序列则输出任意一个,每一个数字不能超过一百位,否则输出
Sample Input
3
Sample Output
99
55
11115
Solution
Code
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#include<map>#include<set>#include<ctime>using namespace std;typedef long long ll;typedef pair<int,int>P;const int INF=0x3f3f3f3f,maxn=255;struct BigInt{ const static int mod=10000; const static int LEN=4; int a[maxn],len; BigInt() { memset(a,0,sizeof(a)); len=1; } void init(int x) { memset(a,0,sizeof(a)); len=0; do { a[len++]=x%mod; x/=mod; }while(x); } void Init(const char s[]) { memset(a,0,sizeof(a)); int l=strlen(s),res=0; len=l/LEN; if(l%LEN)len++; for(int i=l-1;i>=0;i-=LEN) { int t=0,k=max(i-LEN+1,0); for(int j=k;j<=i;j++)t=t*10+s[j]-'0'; a[res++]=t; } } int Compare(const BigInt &b) { if(len<b.len)return -1; if(len>b.len)return 1; for(int i=len-1;i>=0;i--) if(a[i]<b.a[i])return -1; else if(a[i]>b.a[i])return 1; return 0; } BigInt operator +(const BigInt &b)const { BigInt ans; ans.len=max(len,b.len); for(int i=0;i<=ans.len;i++)ans.a[i]=0; for(int i=0;i<ans.len;i++) { ans.a[i]+=((i<len)?a[i]:0)+((i<b.len)?b.a[i]:0); ans.a[i+1]+=ans.a[i]/mod; ans.a[i]%=mod; } if(ans.a[ans.len]>0)ans.len++; return ans; } BigInt operator -(const BigInt &b)const { BigInt ans; ans.len=len; int k=0; for(int i=0;i<ans.len;i++) { ans.a[i]=a[i]+k-b.a[i]; if(ans.a[i]<0)ans.a[i]+=mod,k=-1; else k=0; } while(ans.a[ans.len-1]==0&&ans.len>1)ans.len--; return ans; } BigInt operator *(const BigInt &b)const { BigInt ans; for(int i=0;i<len;i++) { int k=0; for(int j=0;j<b.len;j++) { int temp=a[i]*b.a[j]+ans.a[i+j]+k; ans.a[i+j]=temp%mod; k=temp/mod; } if(k!=0)ans.a[i+b.len]=k; } ans.len=len+b.len; while(ans.a[ans.len-1]==0&&ans.len>1)ans.len--; return ans; } BigInt operator /(const int &n)const { BigInt ans; ans.len=len; int k=0; for(int i=ans.len-1;i>=0;i--) { k=k*mod+a[i]; ans.a[i]=k/n; k=k%n; } while(ans.a[ans.len-1]==0&&ans.len>1)ans.len--; return ans; } void output() { printf("%d",a[len-1]); for(int i=len-2;i>=0;i--) printf("%04d",a[i]); printf("\n"); }};int p[maxn],res,vis[maxn];void init(int n=250){ res=0; for(int i=2;i<=n;i++) if(!vis[i]) { p[++res]=i; for(int j=2*i;j<=n;j+=i)vis[j]=1; }}int main(){ init(); int n; while(~scanf("%d",&n)) { if(n==2)printf("-1\n"); else { BigInt a[55]; for(int i=1;i<=n;i++)a[i].init(p[i]); for(int i=1;i<=n;i++) { BigInt ans; ans.init(1); for(int j=1;j<=n;j++) if(i!=j)ans=ans*a[j]; ans.output(); } } } return 0;}
阅读全文
0 0
- CodeForces 66 D.Petya and His Friends(构造+数论+高精度)
- codeforces 66D D. Petya and His Friends( 数论+构造)
- codeforces 66 D. Petya and His Friends(数论)
- CodeForces 66D - Petya and His Friends(构造)
- Codeforces 66 D Petya and His Friends(找规律)
- CF 66D Petya and His Friends
- CF 61 div2 D. Petya and His Friends
- [数论] Codeforces 516E. Drazil and His Happy Friends
- [数论] Codeforces 819D R #421 D.Mister B and Astronomers & 516E R #292 E. Drazil and His Happy Friends
- CodeForces - 515B Drazil and His Happy Friends
- codeforces 515B B. Drazil and His Happy Friends(模拟)
- codeforces#292B_Drazil and His Happy Friends-暴力水题
- codeforces 111B B. Petya and Divisors(数论)
- Codeforces 439D Devu and his Brother
- Codeforces 439D Devu and his Brother
- CodeForces 439D Devu and his Brother
- Codeforces 689D Friends and Subsequences(二分+RMQ)
- Codeforces 689D Friends and Subsequences(二分+RMQ)
- 这是什么问题
- 主席树/可持久化线段树简介(洛谷P3834/P3919)
- C++常用库函数
- linux 中安装PDF阅读器FoxitReader
- finereport破解版有吗
- CodeForces 66 D.Petya and His Friends(构造+数论+高精度)
- Visual Builder-低代码开发平台中的AK47
- 计算机视觉之OpenCV教程 --- Mat图像类基础(二)
- 课程26 项目6
- Xgboost的简单使用2
- 40、50、60--说说我那些超龄的程序员同事们
- 拿好不谢!程序员圣诞节的脱单秘籍
- redis事务处理
- 走近富兰克林--《富兰克林自传》