ACM-ICPC 2018 Nanjngネットワーク予選(こんにゃくブラシのタイトル)

.A。オリンピア数学の問題

 

アリス、学年の学生66 6は、オリンピア数学の問題について考えているが、彼女はそう感じている彼女が泣くことに絶望します。そして彼女の同級生、ボブは、問題についての考えを持っていません。こうして彼は、あなたが彼を助けるために望んでいます。問題は:

私たちは、意味のkを!k個!kは!:

KK×!= 1×2×⋯×(K-1)は、k!= 1 \回2回\ cdots \ \回(K - 1)回K \ K = 1 × 2 × × K - 1 × K

我々は表しSS Sを:

S = 1×1!+ 2×2!+⋯+ S = 1 \回1!+ 2 \回2!+ \ cdots + S = 1 × 1 + 2 × 2 + +
(N-1)×(N-1)!(N - 1)回(N-1)\!N - 1 × N - 1

次に、SS SモジュールNN nは____________

あなたが整数を与えられているnnはn個。

あなたは計算する必要がSS SモジュロをNN N。

入力

最初の行は、整数含まT(T≤1000)T(T \ル1000)T T 1 0 0 0 テストケースの数を表します)。

各テストケースのために、整数有する線が存在するのNN nが。

それが保証される2≤n≤10182\ルN \ル10 ^ {18} 2 N 1 0 1 8。

出力

各テストケースのために、整数印刷SS SモジュロをNN N。

ヒント

最初のテストは、次のとおりです。S = 1×1 = 1S = 1回1 \ = 1!S = 1 × 1 = 1、及び11 1モジュロ22 2は、11 1。

第二の試験は:S = 1×1 + 2×2 = 5S = 1回1回2 \ +2 \ = 5!!S = 1 × 1 + 2 × 2 = 5、及び55 5モジュロ33 3である22 2。

 

サンプル入力

 

2 
2 
3

 

サンプル出力

 

1つの
2 

ソリューション
プレイテーブルX-1は、ことが判明した
理由を知らないしばらく押し
CODEを:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define int long long
 4 
 5 int cal(int x,int p)
 6 {
 7     int ans = 1;
 8     for(int i=1;i<=x;i++)
 9     ans*=i,ans%=p;
10     return ans;
11 }
12 void work(int x)
13 {
14     int ans = 0;
15     for(int i=1;i<x;i++)
16     ans =(ans+i*cal(i,x))%x;
17     cout<<x<<" "<<ans<<endl;
18 }
19 signed main()
20 {
21   int T;
22   for(cin>>T;T;T--)
23   {
24     int x;cin>>x;
25     cout<<x-1<<endl;
26   }
27   return 0;
28     for(int i=1;i<=100;i++)
29     work(i);
30 }
 

 


 

おすすめ

転載: www.cnblogs.com/zhangbuang/p/11093542.html