結果
| 問題 | No.1255 ハイレーツ・オブ・ボリビアン | 
| コンテスト | |
| ユーザー |  yuusanlondon | 
| 提出日時 | 2020-10-09 23:21:16 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                WA
                                 
                             | 
| 実行時間 | - | 
| コード長 | 1,144 bytes | 
| コンパイル時間 | 248 ms | 
| コンパイル使用メモリ | 82,276 KB | 
| 実行使用メモリ | 61,440 KB | 
| 最終ジャッジ日時 | 2024-07-20 14:15:47 | 
| 合計ジャッジ時間 | 2,045 ms | 
| ジャッジサーバーID (参考情報) | judge2 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | AC * 14 WA * 1 | 
ソースコード
# Python3 program to calculate 
# Euler's Totient Function
def phi(n):
     
    # Initialize result as n
    result = n; 
 
    # Consider all prime factors
    # of n and subtract their
    # multiples from result
    p = 2; 
    while(p * p <= n):
         
        # Check if p is a 
        # prime factor.
        if (n % p == 0): 
             
            # If yes, then 
            # update n and result
            while (n % p == 0):
                n = int(n / p);
            result -= int(result / p);
        p += 1;
 
    # If n has a prime factor
    # greater than sqrt(n)
    # (There can be at-most 
    # one such prime factor)
    if (n > 1):
        result -= int(result / n);
    return result;
# This code is contributed 
# by mits
t=int(input())
for _ in range(t):
  n=int(input())
  if n==1:
    print(0)
    continue
  totient=phi(2*n-1)
  while True:
    flag=0
    count=2
    while count*count<=totient:
      if totient%count==0 and pow(2,totient//count,2*n-1)==1:
        totient=totient//count
        break
      count+=1
    if count*count>totient:
      flag=1
    if flag==1:
      break
  print(totient)
            
            
            
        