AtCoder Beginner Contest 059 by C
AtCoder Beginner Contest 059 について
C言語での回答
できたもの
A
B
できなかったもの
C
D
問題A
#include <stdio.h> #include <ctype.h> int main(void){ char a[11],b[11],c[11]; scanf("%s %s %s", a, b, c); printf("%c%c%c", toupper(a[0]),toupper(b[0]),toupper(c[0])); return 0; }
問題B
#include <stdio.h> #include <string.h> int main(void){ char a[101],b[101]; int i; scanf("%s", a); scanf("%s", b); int size_a = strlen(a); int size_b = strlen(b); int judge = 0; if(size_a>size_b){ judge = 1; } else if(size_a<size_b){ judge = -1; } else{ for(i=0;i<size_a;i++){ if(a[i]>b[i]){ judge = 1; break; } else if(a[i]<b[i]){ judge = -1; break; } } } if(judge==1){ printf("GREATER"); } else if(judge==-1){ printf("LESS"); } else{ printf("EQUAL"); } return 0; }
10の100乗なのでlong long型には収まりません。
double型にすれば収まるのでそうして数値として扱ってもいいみたいです。
今回は文字列としてそれぞれ数値を取得。桁数が違う=配列の要素数が違えば、桁数が多い方が大きく、
桁数が同じ場合には、より大きな位(要素0)から順番に比較し、異なる部分があれば大小関係を見て結果を出力。
問題C
一旦他の方を参考に作成↓
#include <stdio.h> int main(void){ int n,i; scanf("%d", &n); int a; long long kisum = 0, gusum = 0, kians = 0, guans = 0; for(i=0;i<n;i++){ scanf("%d", &a); kisum += a; gusum += a; if(i%2==0){ if(gusum <= 0){ printf("1\n"); guans = guans - gusum + 1; gusum = 1; } if(kisum >= 0){ printf("2\n"); kians = kians + kisum +1; kisum = -1; } } else{ if(gusum >= 0){ printf("3\n"); guans = guans + gusum + 1; gusum = -1; } if(kisum <= 0){ printf("4\n"); kians = kians - kisum + 1; kisum = 1; } } printf("%lld %lld\n", kisum,gusum); } if(kians > guans){ printf("%lld\n", guans); } else{ printf("%lld\n", kians); } return 0; }
問題D
まだ