【题目】 http://acm.hdu.edu.cn/showproblem.php?pid=4704

【报告】

S(K)显然就是N的K正整数划分数。所以SUM{S(K),1<=K<=N}=C(0,N-1)+C(1,N-1)+...+C(N-1,N-1)=2^(N-1)。

N很大,是一个高精度数。求这个幂,网上有很多算法,我自己想了一个:

2^(A*10+B)=(2^A)^10*2^B  (A,B是任意自然数,0<=B<=9)

X^10=((X^2)^2*X)^2   (这个是快速幂)

嗯,然后从高位到低位做一遍就可以了,一次AC。复杂度O(lgN)

【程序】

// Task: 4704 Sum
#include
#include
#include
#include
#include
using namespace std;
const long long modi=1000000007;
long long e2[10];
string n;
long long ans;
inline long long sqr(long long x)   // 求x^2
{
    return (x*x)%modi;
}
inline long long calc(long long x)  // 求x^10
{
    return sqr(sqr(sqr(x))*x%modi);
}
int main()
{
    e2[0]=1;
    for (int i=1;i<=9;i++)
        e2[i]=e2[i-1]*2;
//    for (int i=0;i<=9;i++)
 //       cout << e2[i] << " ";
 //   cout << endl;
    while (cin >> n)
    {
        n[n.length()-1]--;
        for (int i=n.length()-1;i>=0;i--)
            if (n[i]<'0')
            {
                n[i]+=10;
                n[i-1]--;
            }else break;
    //    cout << "N=" << n << endl;
        ans=1;
        for (int i=0;i
            ans=(calc(ans)*e2[n[i]-'0'])%modi;
        cout << ans << endl;
    }
    return 0;
}

【HDOJ】4704 Sum_天涯浪子_新浪博客相关推荐

  1. 【HDOJ】1003 Max Sum_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1003 [报告] 既然是子区间加和问题,可以用减法来处理.比如求[5..10]的和,可以直接用[1..10 ...

  2. 【HDOJ】4602 Partition_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=4602 [报告] 直接贴上标程解题报告:(虽然有些纠结,试一下就弄通了..) Problem C. Par ...

  3. 【HDOJ】1008 Elevator_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=1008 [报告] 这是我在HDOJ里看到的最水的题目,至少目前为止. 题目里已经讲得很清楚了,模拟就能过 ...

  4. 【HDOJ】1022 Train Problem I_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1022 [报告] 模拟,直接模拟一个栈的运行就行了. [程序] // Task: 1022 Train P ...

  5. 【HDOJ】4768 Flyer_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=4768 [报告] 题目中已经说了,保证最多出现一个奇数,所以可以用异或的想法.把所有的数异或起来,如果最后 ...

  6. 【HDOJ】4699 Editor_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [报告] 模拟题吧,本身不是很难. 最初的想法是用Splay tree写,然后疯掉了.苏牛说2B ...

  7. 【HDOJ】1015 Safecracker_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1015 [报告] 题目写的很长,忽略一系列废话,题意就是求一个方程v - w^2 + x^3 - y^4 ...

  8. 【HDOJ】1020 Encoding_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1020 [报告] 题意,是对字符串进行压缩,对字符串中连续字符变成数字+字符,比如BB变成2B,CCC变成 ...

  9. 【HDOJ】5007 Post Robot_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=5007 [报告] 闲来无事刷水题-- 直接暴力判断是否相同就行了,连KMP都不用.简单粗暴. [程序] ...

最新文章

  1. Angular Http
  2. Android基于IIS的APK下载(五)IIS的配置
  3. css3动画,监控动画执行完毕
  4. List的4种迭代方法
  5. Rochambeau POJ - 2912 (枚举和加权并查集+路径压缩)找唯一裁判
  6. Hyper-V损坏数据恢复报告
  7. 关于swift中的懒加载
  8. UI实用素材|字体在设计中的重要性
  9. Bare HTTP不完全是RESTful
  10. python的__name__
  11. 免费学python的网课-这些 AI 课网课最具人气!不仅免费、系统,还附带链接 | 资源...
  12. 安卓开发学习笔记—————《Anroid编程权威指南》第六章 Android编程与兼容性问题...
  13. 如何让Linux上的GPG error 无法验证的这个公钥 NO_PUBKEY D97A3AE911FXXXXX 出错信息消失?
  14. win10默认壁纸_渐变彩色Hero壁纸,微软免费Win10主题《Pride 2020 Flags》下载
  15. linux文件误删除该如何恢复?
  16. 清华大学计算机竞赛自主招生,清华大学自主招生竞赛有哪些要求
  17. SWF文件格式详解(1)
  18. 易语言安卓模拟器adb模块制作认识adb
  19. 《薛兆丰的经济学课》课程总结4--相互依赖
  20. 可使用 git 操作的数据库 dolt

热门文章

  1. 通达信行情数据获取--python_股票量化交易-获取数据的两种方法
  2. python求某个函数的反函数_如何用sympy求快速sigmoid函数的逆函数?
  3. 网页音效简易解决方案audiosprite
  4. 行业研究报告:合束器市场现状及未来发展趋势
  5. 2021.11.18 简单计算阶乘(多种方法)及 求阶乘的和
  6. ENSP连接vm虚拟机
  7. invalid alteration of datatype(varchar2转化clob)
  8. Python基础--------Python要点
  9. win7显卡nvidi466.77驱动和补丁KB4474419和KB4490628
  10. 看,抽签问题还能这样写。。