2 条题解
-
1
本篇题解有误,经阎帝检查发现35行少一个,一下是正确代码
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int a[N]; map<int, int> mp; int check(int x) { if (x == 0) return 1; int d = 0; while (x > 0) x /= 10, d++; return d; } int main() { int n, m; scanf("%d%d", &n, &m); if (n % m == 0) { printf("%d.0", n / m); return 0; } printf("%d.", n / m); int t = check(n / m) + 1; n %= m; int len = 0; while (!mp[n] && n) { mp[n] = len + 1; a[++len] = n * 10 / m; n = n * 10 % m; } if (n == 0) { for (int i = 1; i <= len; i++) { printf("%d", a[i]); if ((i + t) % 76 == 0) printf("\n"); } } else { int p = mp[n]; for (int i = 1; i <= len; i++) { if (i == p) printf("("),t++; printf("%d", a[i]); if ((i + t) % 76 == 0) printf("\n"); } printf(")\n"); } return 0; } -
-1
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10; int a[N]; unordered_map<int, int> mp; int check(int x) { if (x == 0) return 1; int d = 0; while (x > 0) x /= 10, d++; return d; } int main() { int n, m; scanf("%d%d", &n, &m); if (n % m == 0) { printf("%d.0", n / m); return 0; } printf("%d.", n / m); int t = check(n / m) + 1; n %= m; int len = 0; while (!mp[n] && n) { mp[n] = len + 1; a[++len] = n * 10 / m; n = n * 10 % m; } if (n == 0) { for (int i = 1; i <= len; i++) { printf("%d", a[i]); if ((i + t) % 76 == 0) printf("\n"); } } else { int p = mp[n]; for (int i = 1; i <= len; i++) { if (i == p) printf("("); printf("%d", a[i]); if ((i + t) % 76 == 0) printf("\n"); } printf(")\n"); } return 0; }
- 1
信息
- ID
- 1016
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 76
- 已通过
- 31
- 上传者