サイズ: 2427
コメント:
|
サイズ: 2695
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 2: | 行 2: |
<<TableOfContents(2)>> | <<TableOfContents(3)>> |
行 35: | 行 35: |
(187B) | |
行 40: | 行 41: |
=== Revised (ytoku): === {{{#!highlight c #define P;printf("%s%s " #define S y);scanf("%d", s="鶴と亀の",y="足の本数の合計";main(n,l){P"? ",s,6+S&n)P"? ",s,S&l)P"%d\n",s,y+6,n)P"%d\n鶴 %d 羽, 亀 %d 匹\n",s,y,l,n*2-l/2,l/2-n);} }}} (185B) |
renda/golf
ゴルフ大会会場
鶴亀算
Before:
1 #include <stdio.h>
2
3 int main(void)
4 {
5 int num,leg,tsuru,kame;
6 printf("鶴と亀の数の合計 ? ");
7 scanf("%d",&num);
8 printf("鶴と亀の足の本数の合計 ? ");
9 scanf("%d",&leg);
10 kame = (leg - 2 * num) / 2;
11 tsuru = num - kame;
12 printf("鶴と亀の数の合計 %d\n",num);
13 printf("鶴と亀の足の本数の合計 %d\n",leg);
14 printf("鶴 %d 羽, 亀 %d 匹\n",tsuru,kame);
15
16 return 0;
17 }
After:
(187B)
- ポインタの関係で32bitでないと動かない。intが16bitの環境でも動かない。
- EUC-JPでないとポインタの演算が合わないのでy+6を書き換える必要アリ。
Revised (ytoku):
(185B)
PKU 1006
http://poj.org/problem?id=1006
Before:
1 #include <stdio.h>
2
3 #define C_PHY 23
4 #define C_EMO 28
5 #define C_INT 33
6
7 int findpeak(int a, int ca, int b, int cb)
8 {
9 a -= b;
10 while (a % cb != 0) {
11 a += ca;
12 }
13 return a+b;
14 }
15
16 int main()
17 {
18 int n;
19 for (n = 1; ; n++) {
20 int p, e, i, d;
21 scanf("%d %d %d %d", &p, &e, &i, &d);
22 if (p == -1) break;
23
24 int tmp;
25 tmp = findpeak(e, C_EMO, i, C_INT);
26 tmp = findpeak(tmp, C_EMO*C_INT, p, C_PHY);
27
28 tmp -= d;
29 if (tmp <= 0) tmp += C_EMO*C_INT*C_PHY;
30 else if (tmp > C_EMO*C_INT*C_PHY) tmp -= C_EMO*C_INT*C_PHY;
31
32 printf("Case %d: the next triple peak occurs in %d days.\n", n, tmp);
33 }
34 return 0;
35 }
- golf版にアルゴリズムを合わせてあります
After:
1 main(n,p,e,i,d){for(;scanf("%d%d%d%d",&p,&e,&i,&d),p+1;printf("Case %d: the next triple peak occurs in %d days.\n",n++,(i-d+21251)%21252+1))while((i-p)%23|(i-e)%28)i+=33;}
(171B)
- ホールインワンは157Bらしい
- Googleで検索するとそのコードが最上位に出てくるけれどもうちょっと考えたいところ
- mainの第一引数 == 1 (コマンドライン引数がなければ)