PCK予選 [コンテスト]
5完 (oooo-o----)でした. 34 / 100? とか.
やはりこういうの緊張しますが, 先輩が落ち着かしてくれたので満足はしています.
本当に感謝しかないです.
僕は1234と6の半分くらいを書きました.(mm:ssは提出時間)
1. 10問解いたら何点とれる? (01:58)
2. 乗車券 (04:33)
3.家庭菜園 (44:47)
4. すべての数は6174に通ず (32:09)
5. パイプつなぎ職人の給料 (--:--)
(O(N)な解法がありそうだなーと思って思いつかない. ぐぬぬ.)
6. マヤの大予言 (175:01)
7 ~ 10. ちらっと見たけど解けてない. 9ときたいな-.
本選どうだろう.びみょい.
やはりこういうの緊張しますが, 先輩が落ち着かしてくれたので満足はしています.
本当に感謝しかないです.
僕は1234と6の半分くらいを書きました.(mm:ssは提出時間)
1. 10問解いたら何点とれる? (01:58)
#include <stdio.h> int main(void) { int i; int sum; int n; sum = 0; for (i = 0; i < 10; i++){ scanf("%d", &n); sum += n; } printf("%d\n", sum); return (0); }
2. 乗車券 (04:33)
#include <stdio.h> int main(void) { int b1, b2, b3; scanf("%d %d %d", &b1, &b2, &b3); if (b1 + b2 == 2 || b3 == 1){ printf("Open\n"); } else { printf("Close\n"); } return (0); }
3.家庭菜園 (44:47)
#include <cstdio> #include <vector> using namespace std; bool inOrder(vector<int> a) { int t = a[1] - a[0]; for (int i = 0; i < a.size() - 1; i++){ if (a[i + 1] - a[i] != t){ return (false); } } return (true); } int main(void) { int n; int h[128]; int i, j; int ans; vector<int> t; while (scanf("%d", &n) && n){ for (i = 0; i < n + 1; i++){ scanf("%d", &h[i]); } for (i = 0; i < n + 1; i++){ t.clear(); for (j = 0; j < n + 1; j++){ if (i != j){ t.push_back(h[j]); } } if (inOrder(t)){ ans = h[i]; break; } } printf("%d\n", ans); } return (0); }
4. すべての数は6174に通ず (32:09)
#include <cstdio> #include <vector> #include <algorithm> using namespace std; int make(vector<int> num) { int s; s = 0; for (int i = 0; i < 4; i++){ s = s * 10 + num[i]; } return (s); } int main(void) { vector<int> num(4); int n; int t; int ct; while (scanf("%d", &n) && n){ if (n % 1111 == 0){ printf("NA\n"); continue; } ct = 0; while (n != 6174){ ct++; t = n; for (int i = 0; i < 4; i++){ num[i] = t % 10; t /= 10; } sort(num.rbegin(), num.rend()); int L = make(num); sort(num.begin(), num.end()); int S = make(num); n = L - S; } printf("%d\n", ct); } return (0); }
5. パイプつなぎ職人の給料 (--:--)
(O(N)な解法がありそうだなーと思って思いつかない. ぐぬぬ.)
6. マヤの大予言 (175:01)
#include <stdio.h> typedef unsigned long long li; int table[2][13] = {{365, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {366, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; li conv(int y, int m, int d) { li ret; int i; li t = y - 1; ret = 0; ret += t * 365 + (t / 4) - (t / 100) + (t / 400); if (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)){ for (i = 1; i <= m - 1; i++){ ret += table[1][i]; } } else { for (i = 1; i <= m - 1; i++){ ret += table[0][i]; } } ret += d; return (ret); } int main(void) { char rec[256]; li t; int i, j; int dot; while (scanf("%s", rec), rec[0] != '#'){ dot = 0; for (i = 0; rec[i] != '\0'; i++){ if (rec[i] == '.') dot++; } if (dot == 2){ int year, month, day; sscanf(rec, "%d.%d.%d", &year, &month, &day); t = (conv(year, month, day) - conv(2012, 12, 21)) % (1872000); printf("%lld.", t / (20 * 20 * 20 * 18)); t %= (20 * 20 * 20 * 18); printf("%lld.", t / (20 * 20 * 18)); t %= (20 * 20 * 18); printf("%lld.", t / (20 * 18)); t %= (20 * 18); printf("%lld.", t / 20); t %= 20; printf("%lld\n", t); } else { li b, ka, tt, w, ki; int y, sum; sscanf(rec, "%lld.%lld.%lld.%lld.%lld", &b, &ka, &tt, &w, &ki); t = b * (20 * 20 * 20 * 18) + ka * (20 * 20 * 18) + tt * (20 * 18) + w * 20 + ki + conv(2012, 12, 21); for (i = 0; i < 10000; i++){ if (t <= i * 365 + (i / 4) - (i / 100) + (i / 400)) break; } y = i; printf("%d.", y); y--; t -= (y * 365 + (y / 4) - (y / 100) + (y / 400)); sum = 0; y++; for (j = 1; j <= 12; j++){ if (t > table[y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)][j]){ t -= table[y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)][j]; } else { break; } } printf("%d.%lld\n", j, t); } } return (0); }
7 ~ 10. ちらっと見たけど解けてない. 9ときたいな-.
本選どうだろう.びみょい.
2012-09-08 17:45
nice!(0)
コメント(0)
トラックバック(0)
コメント 0