Cトースト(CCPC-Wannafly&CometOJ夏の歓楽試合(2019))

1466 ワード

テーマはカクテルが東北のトーストが大好きです.東北地方の地区戦や秦皇島のwannafly campに行くたびに、カクテルは焼きパンをたくさん食べて、試合で鉄を打っても無駄ではないと思います.「トーストが食べたい!!」いや、半年もトーストを食べていないカクテルはみんな秦皇島に集まって夏休みのキャンプに参加しているのを見て、うらやましく思って声を出した.カクテルが「欲しい」とき、彼の言うことは3つの感嘆符を持って非常に「欲しい」を表します.どれだけ「欲しい」かについては、彼はあなたに計算式をあげて体得させました.2つの整数nnとmodmodをあげて、nを出力します!!!modmodの余剰を求める結果(各!は1つの乗算記号を表す)入力記述入力の合計1行には、問題面に示すようにnnとmodmodの2つの整数が含まれている.(0<=n<=1 e 9,1<=mod<=1 e 9)出力記述はmodより小さい非負の整数で答えを表す.
サンプル入力2 6324サンプル出力2サンプル入力3 99999999サンプル出力731393874
最初のサンプルでは、2!=2,だから2!!=(((2!)!)!) = ((2!)!) = (2!) = 2.2型は6324ですか、それとも2ですか.
考え方:私は先に暴力的に書いて、最後にnが一定の範囲より大きいことを発見した時、答えは0になりました.例3*2対2の剰余を求めると、2対2の剰余を0とするので、2*3対2の剰余も0となるので、nが一定値より大きいと階乗の中にmodが現れ、答えは0となる.
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define MAX 0x3f3f3f3f
#define fori(a,b) for(int i=a;i<=b;i++)
#define forj(a,b) for(int j=a;j<=b;j++)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
typedef long long ll;
const double PI = acos(-1);
const int M=1e5+10;
#define inf 0x3f3f3f
int a[M];
int main()
{
    long long n,mod,ans1=1,i,ans2=1,ans3=1;
    cin>>n>>mod;
    if(n>=6)
    {
        cout<