結果
| 問題 | No.2 素因数ゲーム | 
| コンテスト | |
| ユーザー |  IL_msta | 
| 提出日時 | 2015-05-30 18:31:55 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 2 ms / 5,000 ms | 
| コード長 | 1,030 bytes | 
| コンパイル時間 | 951 ms | 
| コンパイル使用メモリ | 63,828 KB | 
| 実行使用メモリ | 5,248 KB | 
| 最終ジャッジ日時 | 2024-12-26 11:18:46 | 
| 合計ジャッジ時間 | 1,770 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 31 | 
ソースコード
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <string>
/////////
#define REP(i, x, n) for(int i = x; i < n; i++)
#define rep(i,n) REP(i,0,n)
#define P(p) cout<<(p)<<endl;
/////////
typedef long long LL;
typedef long double LD;
/////////
using namespace::std;
/////////
int prim[10000];//
int pnum[10000];
int nim[10000];
int sb(int n){
	int tempN = n;
	int primNum = -1;//素因数の数-1
	for(int i = 2;i<10001;++i){
		if( (tempN%i) == 0){
			++primNum;
			prim[primNum] = i;
			pnum[primNum] = 0;
		
			while( (tempN%i) == 0){
				tempN /= i;
				++pnum[primNum];
			}
		}
	}
	if(tempN != 1){
		++primNum;
		prim[primNum] = tempN;
		pnum[primNum] = 1;
	}
	return primNum;
}
int main(void){
	cin.tie(0);
	ios::sync_with_stdio(false);
	cout << fixed;//
	//cout << setprecision(7);//
	
	int N;
	cin >> N;//[2,10^8]
	
	//まず素因数分解
	
	int num = sb(N);
	
	int ans = pnum[0];
	for(int i=1;i<=num;++i){
		ans = ans ^ pnum[i];
	}
	if( ans != 0){
		P("Alice");
	}else{
		P("Bob");
	}
	
	return 0;
}
            
            
            
        