注意点:#include <stdio.h> int main(); int main(){ int n; char line[256]; int count; int x; gets(line); n = atoi(line); count = 0; for(x=1; x<=n; x++){ if(((x % 7) == 0) || ((x % 3) == 0)){ count = count + 1; } } printf("%d\n", count); return(0); }
for(x=1; x<=n; x++)
」とする
||
」でつなぐ.
また, 「||
と ==
のどちらが先に計算されるか」
などの演算子の優先順位に注意が必要.
自信がなかったら多めに括弧を入れるとよい.
ヒント: 最小値を求めるには, 前に述べた「回数を求める」と 似た方法を使う. まず, 「暫定最小値」を憶えておく変数をひとつ用意し, 次々のデータをその変数と比較して, 新記録があったら その変数の値を更新すればよい. さて, あとはその「暫定最小値」の変数の初期値をどうするか, だ…
注意点:#include <stdio.h> int main(); int main(){ int n; char line[256]; int min; int x; int i; min = 100000000; gets(line); n = atoi(line); for(i=0; i<n; i++){ gets(line); x = atoi(line); if(x < min){ min = x; } } printf("%d\n", min); return(0); }
for(i=0; i<n; i++)
」
でも
「for(i=1; i<=n; i++)
」
でもよい. (ループの中で変数 i を使わないならば)
min
)の初期値をいくつにするか.
やりかたはいろいろある:
注意点:#include <stdio.h> int main(); int main(){ char line[256]; int x; int y; int z; gets(line); z = atoi(line); for(x=1; x<z; x++){ for(y=1; y<z; y++){ if((x*x + y*y) == z*z){ printf("%d %d\n", x, y); } } } return(0); }
x:1 y:1 x:1 y:2 ... x:1 y:(z-1) ここまでで, 内側の繰り返しが一周完了 x:2 y:1 x が 1増えて, ここから, 内側の繰り返しの二周め x:2 y:2 ... x:2 y:(z-1) ここまで内側の繰り返しの二周め x:3 y:1 ... x:(z-1) y:(z-1)