先上题目:

Sum

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 206    Accepted Submission(s): 113

Problem Description
 
Sample Input
2
 
Sample Output
2

Hint

1. For N = 2, S(1) = S(2) = 1.

2. The input file consists of multiple test cases.

 
  2013多校第十场的其中一题,题意就是根据他给的公式求出结果,其实结果就等于2^(n-1),但是这里的n很大,用普通的快速幂解不出来。这里的解法有两种,一是用数论的某一条公式,另一种是这样的指数p可以写成p=p0p1p2p3p4p5p6p7p8···结果:
                                               ans0=1*(2^p0)%MOD;
                  ans1=ans0^10*2^(p1)%MOD;
                  ``````
  在这种情况下这种方法的速度比用普通的快速幂更快,只要在每一个求幂的位置都用快速幂就可以了。
 
上代码:
 #include <stdio.h>
#include <string.h>
#define MAX 1000001
#define MOD 1000000007
using namespace std; char s[MAX]; void Sub(int &len)
{
int i;
if(s[len-]>'') s[len-]--;
else
{
for(i=len-;i>= && s[i]=='';i--) s[i]='';
s[i]--;
if(s[i]==''){s[i]=''; len--;s[len]='\0';}
//if(len==0){s[0]='0';len=1;}
} } long long Fast_Mod(long long a,int p)
{
if(p==) return ;
if(p==) return a%MOD;
long long t=Fast_Mod(a,p>>);
t=t*t%MOD;
if(p&) t=t*a%MOD;
return t;
} int main()
{
int i,len,t;
long long ans;
//freopen("data.txt","r",stdin);
while(scanf("%s",s)!=EOF)
{
len=strlen(s);
Sub(len);
ans=;
//printf("%s\n",s);
for(i=;i<len;i++)
{
t=s[i]-'';
ans=Fast_Mod(ans,);
ans=ans*Fast_Mod(,t)%MOD;
}
printf("%I64d\n",ans);
}
return ;
}

4074

HDU - 4074 - Sum的更多相关文章

  1. HDOJ(HDU).1258 Sum It Up (DFS)

    HDOJ(HDU).1258 Sum It Up (DFS) [从零开始DFS(6)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双 ...

  2. hdu 1258 Sum It Up(dfs+去重)

    题目大意: 给你一个总和(total)和一列(list)整数,共n个整数,要求用这些整数相加,使相加的结果等于total,找出所有不相同的拼凑方法. 例如,total = 4,n = 6,list = ...

  3. 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum

    Sum Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=4704 Mean: 给定一个大整数N,求1到N中每个数的因式分解个数的 ...

  4. HDU 1231 最大连续子序列 &&HDU 1003Max Sum (区间dp问题)

    C - 最大连续子序列 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit ...

  5. HDU 4704 Sum (高精度+快速幂+费马小定理+二项式定理)

    Sum Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u Submit Status  ...

  6. HDU 5776 sum (模拟)

    sum 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5776 Description Given a sequence, you're asked ...

  7. hdu 5586 Sum 最大子段和

    Sum Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5586 Desc ...

  8. hdu 5586 Sum【dp最大子段和】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586 Sum Time Limit: 2000/1000 MS (Java/Others)    Me ...

  9. hdu 4432 Sum of divisors(十进制转其他进制)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4432 代码: #include<cstdio> #include<cstring&g ...

随机推荐

  1. luogu1064 金明的预算方案

    这道题我就想说一点:审题!附件只有2个!钱是10的整数倍,不是100的整数倍! #include <cstdio> #include <cstring> #include &l ...

  2. luogu3157 动态逆序对

    题目大意 给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数. 思路 #include <cstdio> #include <c ...

  3. B3402 [Usaco2009 Open]Hide and Seek 捉迷藏 最短路

    直接最短路板子,dij堆优化. 题干: 题目描述 贝茜在和约翰玩一个“捉迷藏”的游戏. 她正要找出所有适合她躲藏的安全牛棚.一共有N(≤N≤)个牛棚,被编为1到N号.她知道约翰(捉牛者)从牛棚1出发. ...

  4. Wall(凸包)

    http://poj.org/problem?id=1113 题意:给出一些点的坐标,和一个半径r,求出这些点围成的凸包的周长再加上一个半径为r的圆的周长. #include <stdio.h& ...

  5. 【BZOJ4590】自动刷题机

    [思路分析] 比赛的时候想到了用二分+贪心,二分的部分与贪心的部分也写对了,但是由于数据范围未看没有开long long,且二分左端点赋值过小导致WA掉 正解:二分+贪心 二分代码的长度,贪心判断能否 ...

  6. 文件的上传(可以上传照片,word文档,等单个文件)

    jsp: jsp页面: <LINK href="${basePath}plugins/uploadify/uploadify.css" type="text/css ...

  7. Cannot find module 'crc'

    这个时候你只需要打开你nodejs安装的目录,在其中执行 npm install crc(这里查什么模块(module)就安装什么模块).

  8. 查看 Android App 的 versionCode

    有 App 源码时,可以直接查看 AndroidManifest.xml 文件. <manifest android:versionName="1.4" android:ve ...

  9. MySQL 优化之 index_merge (索引合并)

    深入理解 index merge 是使用索引进行优化的重要基础之一.理解了 index merge 技术,我们才知道应该如何在表上建立索引. 1. 为什么会有index merge 我们的 where ...

  10. Deutsch lernen (10)

    Dieser Weg Dieser Weg wird kein leichter sein. Dieser Weg wird steinig und schwer. Nicht mit vielen ...