记录编号 138137 评测结果 AAAAAAAAAA
题目名称 韩信点兵 最终得分 100
用户昵称 GravatarSatoshi 是否通过 通过
代码语言 C++ 运行时间 0.006 s
提交时间 2014-11-05 18:02:30 内存使用 0.32 MiB
显示代码纯文本
  1. #include <fstream>
  2. #include <string>
  3. #include <algorithm>
  4. using namespace std;
  5. ifstream in("HanXin.in");
  6. ofstream out("HanXin.out");
  7. long long n,m,sum=1,cost=1,s=0,dost=1;
  8. class node
  9. {
  10. public:
  11. long long a;
  12. long long b;
  13. }rest[11];
  14. long long compare(node x,node y)
  15. {
  16. if(x.a<=y.a)return true;
  17. return false;
  18. }
  19. int main()
  20. {
  21. long long i,j;
  22. in>>n>>m;
  23. for(i=1;i<=m;i++)
  24. {
  25. in>>rest[i].a>>rest[i].b;
  26. if(rest[i].b==0)rest[i].b=rest[i].a;
  27. }
  28. sort(rest+1,rest+m+1,compare);
  29. for(i=1;i<=m;i++)sum*=rest[i].a;
  30. for(i=1;i<=m;i++)
  31. {
  32. cost=1;
  33. for(j=1;j<=m;j++)
  34. {
  35. cost*=rest[j].a;
  36. }
  37. cost/=rest[i].a;
  38. dost=cost;
  39. while(cost%rest[i].a!=1)cost+=dost;
  40. cost=cost*rest[i].b;
  41. s+=cost;
  42. }
  43. //out<<s<<' '<<sum<<endl;
  44. if(s>n)
  45. {
  46. if(s>=sum)
  47. {
  48. if(s-(s-n+sum-1)/sum*sum>=0)out<<n-(s-(s-n+sum-1)/sum*sum)<<endl;
  49. else out<<-1<<endl;
  50. }
  51. else out<<-1<<endl;
  52. }
  53. if(s==n)out<<0<<endl;
  54. if(s<n)out<<n-(s+(n-s)/sum*sum)<<endl;
  55. //mark(175,180);
  56. in.close();
  57. out.close();
  58. return 0;
  59. }