记录编号 77801 评测结果 AAAAAAAAAA
题目名称 方程 最终得分 100
用户昵称 Gravatarzjmfrank2012 是否通过 通过
代码语言 C++ 运行时间 0.124 s
提交时间 2013-11-02 18:08:52 内存使用 0.47 MiB
显示代码纯文本
  1. #include<fstream>
  2. #include<iomanip>
  3. using namespace std;
  4. ifstream fi("equationz.in");
  5. ofstream fo("equationz.out");
  6. int k,p=0,t;
  7. unsigned long long x;
  8. struct bb
  9. {
  10. int num[401],len;
  11. }f[101];
  12. bb operator +(bb &a,bb &b)
  13. {
  14. int i,j;
  15. bb ans;
  16. for(i=0;i<=300;i++)
  17. {
  18. ans.num[i]=0;
  19. }
  20. ans.len=0;
  21. for(i=1;i<=max(a.len,b.len);i++)
  22. {
  23. ans.num[i]+=a.num[i]+b.num[i];
  24. if(ans.num[i]>=1000000)
  25. {
  26. ans.num[i+1]++;
  27. ans.num[i]-=1000000;
  28. }
  29. }
  30. if(ans.num[max(a.len,b.len)+1]>0)
  31. {
  32. ans.len=max(a.len,b.len)+1;
  33. }
  34. else
  35. {
  36. ans.len=max(a.len,b.len);
  37. }
  38. return ans;
  39. }
  40. int pow(int x1,int n)
  41. {
  42. if(n==0)return 1;
  43. if(n==1)return x1%1000;
  44. if(n%2==0)return (pow(x1,(n/2))*pow(x1,(n/2)))%1000;
  45. if(n%2==1)return ((pow(x1,(n/2))*pow(x1,(n/2))%1000)*x1)%1000;
  46. }
  47. int main()
  48. {
  49. int i,j;
  50. fi>>k>>x;
  51. x=pow((int)(x%1000),(int)(x%1000))%1000;
  52. f[0].num[1]=1;
  53. f[0].len=1;
  54. for(i=1;i<=x-1;i++)
  55. {
  56. for(j=min(k-1,i);j>=1;j--)
  57. {
  58. f[j]=f[j]+f[j-1];
  59. }
  60. }
  61. fo<<f[k-1].num[f[k-1].len];
  62. for(i=f[k-1].len-1;i>=1;i--)
  63. {
  64. fo<<setw(6)<<setfill('0')<<f[k-1].num[i];
  65. }
  66. return 0;
  67. }