Sum HDU - 4704
2017-07-30 15:38
302 查看
#include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <vector> #include <cstdio> #include <bitset> #include <cmath> #include <queue> #include <stack> #include <map> #include <set> #define FOR(i,a,b) for(int i=a;i<=b;i++) #define ROF(i,a,b) for(int i=a;i>=b;i--) #define mem(i,a) memset(i,a,sizeof(i)) #define rson mid+1,r,rt<<1|1 #define lson l,mid,rt<<1 #define mp make_pair #define pb push_back #define ll long long #define LL long long using namespace std; template <typename T>inline void read(T &_x_){ _x_=0;bool f=false;char ch=getchar(); while (ch<'0'||ch>'9') {if (ch=='-') f=!f;ch=getchar();} while ('0'<=ch&&ch<='9') {_x_=_x_*10+ch-'0';ch=getchar();} if(f) _x_=-_x_; } const double eps = 1e-8; const int maxn = 2e5+7; const int mod = 1e9+7; const ll inf = 1e15; char s[maxn]; ll fast_mod(ll n){ ll bs=2,ans=1; while(n){ if(n&1) ans=ans%mod*bs%mod; bs=(bs*bs)%mod; n>>=1; ans%=mod; } return ans%mod; } int main(){ while(~scanf("%s",s+1)){ int len =strlen(s+1); ll md = 0; FOR(i,1,len){ md+=(s[i]-'0'); if(i!=len) md*=10; md%=(mod-1); } md-=1; //之前这一句写的是if(md==0) md=mod-1,然后下面这一句写的是md-=1;然后wa了。。。难道经过上面的运算md还能小于0么....又没有减法。。。。 md=(md+mod)%mod; printf("%I64d\n",fast_mod(md)); } return 0; }
相关文章推荐
- 数论+快速幂-hdu-4704-Sum
- HDU 4704 Sum (隔板原理 + 费马小定理)
- hdu 4704 Sum
- HDU 4704 SUM(费马小定理)
- 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum
- HDU 4704 Sum
- hdu 4704 Sum/杭电2013年多校第十场1009 快速幂+循环
- HDU 4704 Sum 【隔板原理+费马小定理+快速幂】
- 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum
- hdu 4704 Sum (整数和分解+快速幂+费马小定理降幂)
- 2013 多校第九场 hdu 4704 Sum(2的幂次方取模)
- HDU 4704 Sum 费马小定理+快速幂
- HDU 4704 SUM 整数快速幂+费马小定理
- hdu 4704 Sum||hdu 4869 Turn the pokers 费马小定理
- HDU~4704~SUM
- hdu 4704 Sum(费马小定理)解题报告
- hdu - 4704 - Sum(费马小定理)
- hdu 4704 Sum(费马小定理)
- HDU - 4704 Sum——费马小定理
- hdu 4704 Sum【组合数学/费马小定理/大数取模】By cellur925