题解 P2818 【天使的起誓】

z3475

2017-10-29 16:38:46

Solution

原本一开始以为要上高精,想了一下n进制m的个位就是答案 无奈代码复杂度太高,瞟了一下标签,普及+,同余.... 马上想到了读入优化的黑科技 思路楼下讲的很清楚了 1268 mod n=(((1%n\*10+2)%n\*10+6)%n\*10+8)%n 用通俗的话说可以一边读一边模n 然后代码就是读入优化的模板加模然后判断0的特殊点了 好像代码最短? ```cpp #include <bits/stdc++.h> typedef long long ll; using namespace std; int readd(ll n){ char l=getchar();ll u=0; while (!(l>='0'&&l<='9')) l=getchar(); while ((l>='0'&&l<='9')) u=(u*10+l-'0')%n,l=getchar();//膜一下 return u?u:n;//等价u与if (u!=0) return u;else return n; } int main (int argc, char const* argv[]) { ll n,m;//m%n 0=n //2<=n<=10^8,2<=m<=10^1000 scanf("%lld",&n); cout << readd(n); } ``` 思路知道了就很简单了