先上题目:

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;
                  ``````
  在这种情况下这种方法的速度比用普通的快速幂更快,只要在每一个求幂的位置都用快速幂就可以了。
 
上代码:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define MAX 1000001
  4. #define MOD 1000000007
  5. using namespace std;
  6.  
  7. char s[MAX];
  8.  
  9. void Sub(int &len)
  10. {
  11. int i;
  12. if(s[len-]>'') s[len-]--;
  13. else
  14. {
  15. for(i=len-;i>= && s[i]=='';i--) s[i]='';
  16. s[i]--;
  17. if(s[i]==''){s[i]=''; len--;s[len]='\0';}
  18. //if(len==0){s[0]='0';len=1;}
  19. }
  20.  
  21. }
  22.  
  23. long long Fast_Mod(long long a,int p)
  24. {
  25. if(p==) return ;
  26. if(p==) return a%MOD;
  27. long long t=Fast_Mod(a,p>>);
  28. t=t*t%MOD;
  29. if(p&) t=t*a%MOD;
  30. return t;
  31. }
  32.  
  33. int main()
  34. {
  35. int i,len,t;
  36. long long ans;
  37. //freopen("data.txt","r",stdin);
  38. while(scanf("%s",s)!=EOF)
  39. {
  40. len=strlen(s);
  41. Sub(len);
  42. ans=;
  43. //printf("%s\n",s);
  44. for(i=;i<len;i++)
  45. {
  46. t=s[i]-'';
  47. ans=Fast_Mod(ans,);
  48. ans=ans*Fast_Mod(,t)%MOD;
  49. }
  50. printf("%I64d\n",ans);
  51. }
  52. return ;
  53. }

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. CF799B T-shirt buying

    题目大意 有一些衣服,它们有价格.正面的颜色和反面的颜色.现有一群顾客按顺序来买存在某颜色且价格最低的衣服(不存在则不会买),求每个顾客花了多少钱. 思路 #include <cstdio> ...

  2. public static float CompareExchange(ref float location1,float value,float comparand)

    https://msdn.microsoft.com/en-us/library/k9hz8w9t(v=vs.110).aspx Compares two single-precision float ...

  3. Androlid入门之文件系统操作(三)文件读写

         import java.io.*; import android.app.Activity; import android.os.Bundle; import android.view.Vi ...

  4. C# textbox中输入时加限制条件 // C#Winform下限制TextBox只能输入数字 // 才疏学浅(TextBox 小数点不能在首位+只能输入数字)

    textbox中输入时加限制条件 分类: C# winform2008-08-26 08:30 306人阅读 评论(0) 收藏 举报 textbox正则表达式object 1.用正则表达式! 2.使用 ...

  5. ul和li里面的list-style

    对ul   list-type  只是设置ul的样式对li    list-type 是对li的综合样式设定  语法是 li-style:list-style-type/list-style-imag ...

  6. python--3、函数

    定义: 定义函数时,也相当于定义变量.会把函数体内的代码存入开辟的内存空间中.使用函数时,通过func() 声明是函数,其对应的值为代码.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执 ...

  7. C#使用wkhtmltopdf,把HTML生成PDF(包含分页)

    最近花了2天多的时间终于把HTML生成PDF弄好了.步骤如下: 1.首先是技术选型.看了好多都是收费的就不考虑了. 免费的有: jsPDF(前端生成,清晰度不高,生成比较慢) iText(严格要求ht ...

  8. JavaScript的基本语法(一)

    一.常用的表单元素有: 文本框(text). 密码框(password). 多行文本框(<textarea>) 单选按钮(radio). 复选框(checkbox). 列表框(<se ...

  9. Docker系列之入门

    Docker基本介绍 一.什么是Docker 在docker的官方之什么是docker中提到了一句话:“当今各大组织或者团体的创新都源于软件(例如OA.ERP等),其实很多公司都是软件公司" ...

  10. python tips:类的绑定方法(bound)和非绑定方法(unbound)

    类属性只有类及其实例能够访问,可以理解为一个独立的命名空间. Python中类属性的引用方式有两种: 1. 通过类的实例进行属性引用,称为绑定方法(bound method),可以理解为方法与实例绑定 ...