文系プログラマーのプログラミング備忘録

Java、競プロ、数学などについて書いてます

Structured Programming [ AIZU ONLINE JUDGE ITP1_5_D ]

judge.u-aizu.ac.jp


goto文で書かれたC++言語のプログラムを読んで、同じ動作をするプログラムを書け、ただしgoto文は使うな、という問題です。


C++が読めず、goto文もよくわからないので、このプログラムが何をやっているのか全然わかりません。他の方の提出を確認していったところ、どうやら「1~Nのうち3の倍数と3のつく数字を全て出力せよ」という、いわゆるナベアツ問題のようです。動作がわかれば、あとは簡単に実装できます。



import java.util.*;

class Main {
	static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		
		int n = sc.nextInt();
		
		for (int i=1; i<=n; i++) {
			if (i%3 == 0) System.out.print(" "+i);
			else if (String.valueOf(i).contains("3")) System.out.print(" "+i);
		}
		
		System.out.println();
		
	}
}