Gym - 101480D -Digit Division (思路)
阿新 • • 發佈:2018-11-14
連結:
https://vjudge.net/contest/269397#problem/D
題意:
給出n位數,和一個數m,問有多少種切割方法,使得n切割出來的數都能被m整除
思路:
如果兩部分都能被m整除,那麼和起來一定也能
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll mod = 1e9+7; const int maxn = 3e5+5; char a[maxn]; ll qpow(ll x,ll m) { ll ans = 1; while(m) { if(m&1) { ans*=x; ans %= mod; } x*=x; x%=mod; m/=2; } return ans; } int main() { ll n,m,num = 0; cin>>n>>m; cin>>a; ll x = 0; for(int i = 0; i < n; i ++) { x*=10; x +=a[i] - '0'; x%=m; if(x == 0) num ++; } ll ans ; if(x == 0) ans = qpow(2,num-1); else ans = 0; cout<<ans<<endl; return 0; }