世界の何とか-C++
A 以上B以下の整数のうち、3の倍数および3の付く数を、小さい順に出力してください。なお、「3の付く数」とは、10進数表記にした時、少なくとも1つの桁が3であるような数のことです。
code:C++
using namespace::std;
int main () {
int a,b,c;
cin >> a;
cin >> b;
for ( ; a<=b; ++a) {
if (a%3==0) {
cout << a << endl;
}
else {
for (c=a; c>=1; c=c/10) {
if (c%10==3) {
cout << a << endl;
}
}
}
}
return 0;
}
自分で実行した限り上のコードでも条件を満たしているように思えたものの何度修正してみても正解にはならなかったので他の人の回答を見てみた。
もし間違っているところが分かる方はTwitterのDMなどで連絡してくれるとありがたいです。
code:C++
using namespace std;
int main() {
int a, b;
cin >> a >> b;
for (int i = a; i <= b; ++i)
if (i % 3 == 0 || to_string(i).find('3') != -1)
cout << i << endl;
}
3のつく数字を挙げる際は数字を文字列にして、その文字列の中に3という数字が含まれているかを判断しているみたい。
文字列の中に含まれているかを調べる方法は知らなかったため勉強になった。
ただ、先に自分で書いたコードの間違っている部分が分からない。
少し後者のコードに比べて煩雑であることは事実なのでこれを機にこのやり方を覚えようと思う