题解 P2818 【天使的起誓】
z3475
2017-10-29 16:38:46
原本一开始以为要上高精,想了一下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);
}
```
思路知道了就很简单了