AtCoder Beginner Contest 048 by C
AtCoder Beginner Contest 048について
C言語での回答
できたもの
A
できなかったもの
B
C
D
問題A
#include <stdio.h> int main(void){ char a[10], c[10], x[101]; scanf("%s %s %s", a,x,c); printf("A%cC\n", x[0]); return 0; }
問題B
#include <stdio.h> int main(void){ long long a,b,x,i; scanf("%lld %lld %lld", &a, &b, &x); long long num = 0; long long count = 0; if(a==0){ count = b/x + 1; } else{ count = b/x - (a-1)/x; } printf("%lld", count); return 0; }
割るという方向性は悪くなかった
あくまでf(b)-f(a-1)を計算しないといけない
(b-aを考えすぎ)
解けなかった原因
・方針がよくなかった(発想力不足)
問題C
#include <stdio.h> int main(void){ int n,i,j; long long x; int a[100001]={0}; scanf("%d %lld", &n, &x); for(i=0;i<n;i++){ scanf("%d", &a[i]); } long long count = 0; if(a[0]>x){ count += (a[0] - x); a[0] = x; } for(i=1;i<n;i++){ if(a[i-1]+a[i]>x){ long long tmp = a[i-1] + a[i] - x; count += tmp; a[i] -= tmp; } } printf("%lld", count); return 0; }
もう全部long long でよくね?
解けなかった原因
・a[0] > xの場合を考えていなかった
・x,countの型をintにしていた(10^9を3回足すと超えちゃう)
問題D
まだ