intmain(){ cin >> n >> c; a = n; // 第一层 a--, n--; v.push_back(1); // 枚举看看有几层 for (int i = 2; i < 100; i++) { int t = 2 * (2 * i - 1); a -= t; if (a < 0) break; sum += t; v.push_back(2 * i - 1); }
for (int i = v.size() - 1; i >= 0; i--) { for (int j = 1; j <= (v[v.size() - 1] - v[i]) / 2; j++) cout << ' '; for (int j = 1; j <= v[i]; j++) cout << c; cout << endl; } for (int i = 1; i < v.size(); i++) { for (int j = 1; j <= (v[v.size() - 1] - v[i]) / 2; j++) cout << ' '; for (int j = 1; j <= v[i]; j++) cout << c; cout << endl; } // 输出剩下的数字 cout << n - sum << endl; return0; }
L1-003 个位数统计 (15 分)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#include<algorithm> #include<cstring> #include<iostream> #include<map> #define x first #define y second usingnamespace std;
string n; map<int, int> m;
intmain(){ cin >> n; for (int i = 0; i < n.size(); i++) m[n[i] - '0']++;
for (auto node : m) cout << node.x << ':' << node.y << endl;
#include<algorithm> #include<cstring> #include<iostream> usingnamespace std; constint N = 110; // 题目要求长整型范围 typedeflonglong LL; int n; LL a[N], b[N]; LL sum;
LL gcd(int a, int b){ return b ? gcd(b, a % b) : a; }
LL lcm(int a, int b){ return a * b / gcd(a, b); }
intmain(){ scanf("%d", &n); int m = 1; for (int i = 0; i < n; i++) { scanf("%lld/%lld", &a[i], &b[i]); m = lcm(m, b[i]); } for (int i = 0; i < n; i++) { a[i] *= (m / b[i]); sum += a[i]; } // 处理数字 LL t = gcd(sum, m); sum /= t; m /= t; // 特判负号 if (sum < 0) { cout << '-'; sum = abs(sum); } if (sum % m == 0) // 是不是整数 cout << sum / m << endl; elseif (sum < m) // 有没有整数 cout << sum % m << '/' << m << endl; else cout << sum / m << ' ' << sum % m << '/' << m << endl; return0; }