fork download
  1. #include<algorithm>
  2. #include<cstdio>
  3. #include<iostream>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<string>
  7. #include<vector>
  8. #include<stack>
  9. #include<queue>
  10. #include<ctime>
  11. #include<map>
  12. #include<deque>
  13. #include<set>
  14. #define pi M_PI
  15. #define FOR(i,a,b) for(int i=a;i<=b;i++)
  16. #define FO(i,a,b) for(int i=a;i<b;i++)
  17. #define FORD(i,a,b) for(int i=a;i>=b;i--)
  18. #define FOD(i,a,b) for(int i=a;i>b;i--)
  19. #define LL long long
  20. #define fi first
  21. #define se second
  22. #define maxn 1e5
  23. #define oo 1e18
  24. #define sc(x) scanf("%d",&x)
  25. #define lb(v,t) lower_bound(v.begin(),v.end(),t)
  26. #define ub(v,t) upper_bound(v.begin(),v.end(),t)
  27. #define pb push_back
  28. #define bs(v,t) binary_search(v.begin(),v.end(),t)
  29. #define FILEIN freopen("inp.txt","r",stdin)
  30. #define FILEOUT freopen("out.txt","w",stdout)
  31. using namespace std;
  32. LL P, Q;
  33. int s, t;
  34. string chuyen(LL x){
  35. string s1 = "";
  36. if (x == 0) return "0";
  37. while(x > 0){
  38. s1 = s1 + char(x%10 + '0');
  39. x/=10;
  40. }
  41. reverse(s1.begin(),s1.end());
  42. return s1;
  43. }
  44. void sub12(){ // O(n)
  45. string s1 = "";
  46. LL res = 0;
  47. P %= Q;
  48. while(s1.length() <= t){
  49. if(P == 0) break;
  50. P *= 10;
  51. res = P/Q;
  52. s1 += chuyen(res);
  53. P = P % Q;
  54. }
  55. res = 0;
  56. //cout << s1 << endl;
  57. s1 = "0" + s1;
  58. int l = s1.length() - 1;
  59. t = min(t, l);
  60. for(int i = s; i <= t; i++)
  61. res = (res + (s1[i] - '0') % Q) % Q;
  62. cout << res << endl;
  63. }
  64. void sub3(){
  65. vector <int> du,thuong;
  66. P %= Q;
  67. du.pb(P);
  68. int dem = 0, vt = 0;
  69. while(P != 0 && dem < 10000){
  70. int x = Q/P;
  71. if(lb(du,(P * (x + 1)) % Q) != du.end()){
  72. vector <int> :: iterator it;
  73. it = lb(du,(P * (x + 1)) % Q);
  74. if(*it == (P * (x + 1)) % Q){
  75. vt = it - du.begin();
  76. break;
  77. }
  78. }
  79. du.pb((P * (x + 1)) % Q);
  80. thuong.pb(P * (x + 1)/Q);
  81. dem ++;
  82. }
  83. for(int i = vt; i < thuong.size() ; i++)
  84. cout << thuong[i];
  85. }
  86. int main(){
  87. freopen("frac.inp","r",stdin);
  88. freopen("frac.out","w",stdout);
  89. int test;
  90. cin >> test;
  91. while(test--){
  92. cin >> P >> Q >> s >> t;
  93. sub12();
  94. }
  95. return 0;
  96. }
  97.  
  98.  
Runtime error #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
Standard output is empty