NC229015. Notepad
描述
输入描述
第一行包括3个正整数。数字不包含前导零。
输出描述
在唯一的一行输出与最后一个数字写在同一页上的数字数量。
示例1
输入:
2 3 3
输出:
1
说明:
示例2
输入:
2 3 4
输出:
4
说明:
二进制数系统中正好有 4 个长度为 3 的数字。所有 4 个数字都可以写在第一页上。C++ 解法, 执行用时: 63ms, 内存消耗: 4208K, 提交时间: 2021-10-27 16:46:16
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+5; const int MAXN=1e9+5; ll c,phi; string s1,s2; ll b,n; ll euler(ll n){ ll ans=1; for(ll i=2;i*i<=n;i++){ if(n%i==0){ ans*=i-1; n/=i; while(n%i==0){ ans*=i; n/=i; } } } if(n!=1){ ans*=n-1; } return ans; } ll get(string s,ll mod){ ll ans=0; for(int i=0;i<s.size();i++){ ans=ans*10+s[i]-'0'; ans%=mod; } return ans; } ll qmi(ll a,ll n){ ll ans=1; while(n){ if(n&1)ans=(ans*a)%c; a=(a*a)%c; n>>=1; } return ans; } int main(){ cin>>s1>>s2>>c; phi=euler(c); b=get(s1,c)%c; n=get(s2,phi); ll ans=qmi(b,(n-1+phi)%phi)%c*((b-1+c)%c)%c; printf("%lld\n",ans==0?c:ans); return 0; }