标签:
/* 数字不重复 */ #include<iostream> #include<cstdio> #include<cstring> #define maxn 2600 using namespace std; int n,ans[maxn],l,p[maxn]; void Mul(int x) { for(int i=1;i<=l;i++) ans[i]=ans[i]*x; for(int i=1;i<=l;i++) if(ans[i]>9) { ans[i+1]+=ans[i]/10; ans[i]=ans[i]%10; } while(ans[l+1]) { l++; ans[l+1]+=ans[l]/10; ans[l]=ans[l]%10; } } int main() { scanf("%d",&n); int i,k,s=0; for(i=2;i;i++) { if(n-i<0)break; n=n-i;p[++s]=i; } k=n; while(k) for(int i=s;i>=1;i--) if(k) { p[i]++;k--; } ans[1]=1; l=1; for(int i=1;i<=s;i++) Mul(p[i]); for(int i=l;i>=1;i--) printf("%d",ans[i]); return 0; }
/* 数字可以重复的 */ #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,ans[100001],l; void Che(int x) { for(int i=1;i<=l;i++) ans[i]=ans[i]*x; for(int i=1;i<=l;i++) if(ans[i]>9) { ans[i+1]=ans[i+1]+ans[i]/10; ans[i]=ans[i]%10; } if(ans[l+1]>0)l++; } int main() { cin>>n; ans[1]=1; l=1; while(n>=5) { n=n-3; Che(3); } Che(n); cout<<l<<endl; if(l>100) for(int i=l;i>l-100;i--)cout<<ans[i]; else for(int i=l;i>=1;i--) cout<<ans[i]; }
标签:
原文地址:http://www.cnblogs.com/yanlifneg/p/5551249.html