結果

問題 No.312 置換処理
ユーザー startcpp
提出日時 2015-12-06 13:07:03
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
AC  
実行時間 12 ms / 2,000 ms
コード長 849 bytes
コンパイル時間 537 ms
コンパイル使用メモリ 54,448 KB
実行使用メモリ 6,824 KB
最終ジャッジ日時 2024-11-15 11:52:34
合計ジャッジ時間 1,848 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 45
権限があれば一括ダウンロードができます

ソースコード

diff #

//x文字の#を空文字に置換すると、N % x文字残る。
//基本的にはN % x == 0となる最小のxを求めてあげれば良い。
//(ただし、##を消さないために、xは3以上にする必要がある。)
//なお、約数の対称性より、Nが合成数ならばxの最小値もSQLT(N)以下になるのでxが大きくなったらNは素数である。
//このときはNを出力すればよい。
//
//…なんて簡単な問題なわけがなくて、N = 2 * P(Pは3以上の素数)のときはPを出力しないといけないですね。
#include <iostream>
using namespace std;

int main()
{
	long long n;
	cin >> n;
	for( int x = 3; x <= 1000000; x++ ){
		if( n % x == 0 ){
			cout << x << endl;
			return 0;
		}
	}
	if( n % 2 == 0 && n >= 6 )
		cout << n / 2 << endl;
	else
		cout << n << endl;
	return 0;
}
0