记录编号 |
77801 |
评测结果 |
AAAAAAAAAA |
题目名称 |
方程 |
最终得分 |
100 |
用户昵称 |
zjmfrank2012 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.124 s |
提交时间 |
2013-11-02 18:08:52 |
内存使用 |
0.47 MiB |
显示代码纯文本
- #include<fstream>
- #include<iomanip>
- using namespace std;
- ifstream fi("equationz.in");
- ofstream fo("equationz.out");
- int k,p=0,t;
- unsigned long long x;
- struct bb
- {
- int num[401],len;
- }f[101];
- bb operator +(bb &a,bb &b)
- {
- int i,j;
- bb ans;
- for(i=0;i<=300;i++)
- {
- ans.num[i]=0;
- }
- ans.len=0;
- for(i=1;i<=max(a.len,b.len);i++)
- {
- ans.num[i]+=a.num[i]+b.num[i];
- if(ans.num[i]>=1000000)
- {
- ans.num[i+1]++;
- ans.num[i]-=1000000;
- }
- }
- if(ans.num[max(a.len,b.len)+1]>0)
- {
- ans.len=max(a.len,b.len)+1;
- }
- else
- {
- ans.len=max(a.len,b.len);
- }
- return ans;
- }
- int pow(int x1,int n)
- {
- if(n==0)return 1;
- if(n==1)return x1%1000;
- if(n%2==0)return (pow(x1,(n/2))*pow(x1,(n/2)))%1000;
- if(n%2==1)return ((pow(x1,(n/2))*pow(x1,(n/2))%1000)*x1)%1000;
- }
- int main()
- {
- int i,j;
- fi>>k>>x;
- x=pow((int)(x%1000),(int)(x%1000))%1000;
- f[0].num[1]=1;
- f[0].len=1;
- for(i=1;i<=x-1;i++)
- {
- for(j=min(k-1,i);j>=1;j--)
- {
- f[j]=f[j]+f[j-1];
- }
- }
- fo<<f[k-1].num[f[k-1].len];
- for(i=f[k-1].len-1;i>=1;i--)
- {
- fo<<setw(6)<<setfill('0')<<f[k-1].num[i];
- }
- return 0;
- }