NC19877. [AHOI2007]密码箱
描述
输入描述
输入文件只有一行,且只有一个数字n(1 ≤ n ≤ 2,000,000,000)。
输出描述
你的程序需要找到所有满足前面所描述条件的x,如果不存在这样的x,你的程序只需输出一行“None”(引号不输出),否则请按照从小到大的顺序输出这些x,每行一个数。
示例1
输入:
12
输出:
1 5 7 11
Java(javac 1.8) 解法, 执行用时: 1658ms, 内存消耗: 10552K, 提交时间: 2023-03-16 19:07:48
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); long n = sc.nextInt(); for(long i = 1; i < n; i++){ if(i*i % n == 1)System.out.println(i); } } }
C++(clang++ 11.0.1) 解法, 执行用时: 540ms, 内存消耗: 384K, 提交时间: 2023-07-26 11:36:45
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n; cin >> n; for (ll i = 0; i < n ; i++) { ll x = sqrt(i * n + 1); if(x * x == i * n + 1) cout << x << endl; } return 0; }
C(clang11) 解法, 执行用时: 497ms, 内存消耗: 348K, 提交时间: 2022-04-16 18:22:44
#include<stdio.h> int main(){ long long n,i,k; scanf("%lld",&n); for(i=0;i<n;i++){ k=sqrt(1+n*i); if(k>n||k<0)break; if (k*k==1+n*i) printf("%d\n",k); } }