結果

問題 No.1611 Minimum Multiple with Double Divisors
コンテスト
ユーザー karinohito
提出日時 2021-07-22 16:06:38
言語 C++14
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++14 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
AC  
実行時間 826 ms / 2,000 ms
コード長 860 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,048 ms
コンパイル使用メモリ 183,612 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-04-19 05:13:32
合計ジャッジ時間 7,865 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge2_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 37
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

//#include <atcoder/all>
#include <bits/stdc++.h>
using namespace std;
//using namespace atcoder;
using ll = long long;
#define all(A) A.begin(),A.end()
using vll = vector<ll>;
#define rep(i, n) for (long long i = 0; i < (long long)(n); i++)
using Graph = vector<vector<ll>>;
Graph G;
vll dist;
vector<bool> seen;
ll gcd(ll(a), ll(b)) {
	ll c = a;
	while (a % b != 0) {
		c = a % b;
		a = b;
		b = c;
	}
	return b;
}
int main() {
	ll T;
	cin>>T;
	vll P={2,3,5,7,11,13,17,19,23,29,31};
	ll n=P.size();
	rep(i,T){
		ll N;
		cin>>N;
		rep(i,31){
			ll M=N*(i+2);
			ll an=1;
			ll am=1;
			ll NN=N;
			rep(k,n){
				ll y=0;
				while(M%P[k]==0){
					y++;
					M/=P[k];
				}
				am*=(y+1);
			}
			rep(k,n){
				ll y=0;
				while(NN%P[k]==0){
					y++;
					NN/=P[k];
				}
				an*=(y+1);
			}
			if(am==an*2){
				cout<<N*(i+2)<<endl;
				break;
			}

		}
	}
}
0