思路1:

找规律,本题若是直接暴力搜索,就是f(n)=2^n-1,然后f(n)%1000000,那么结果会越界;所以考虑用f(n+1)=(2*f(n)+1)%1000000,不过遇到较大数据的时候,会出现超时的情况,毕竟这个结果是线性时间增长的,和输入数据体量的大小有直接关系,所以这里还需要再次考虑优化。通过数据对比发现,当n>10005时,有f(123456)=f(23456)  f(123456789)=f(23456789)=...=f(56789)  即略去高位,剩下五位数。但是还需要考虑的是 if(m%100000<6),需要有m=100000+m%10;如此处理之后就不会超时了。

 #include <iostream>
using namespace std; int num[];
int main(){
int N,m,i;
num[]=;
for(int i=;i<;i++){
num[i] = (*num[i-]+)%;
}
cin>>N;
while(N--){
cin>>m;
if(m>){
if(m%< ){
m = +m%;
}
else{
m = m%;
}
}
cout<<num[m]<<endl;
} }

思路2:

我们知道汉诺塔的公式是f(n)=2^n-1

而f(n)%1000000= (2^n-1)%1000000 = 2^n%100000-1

而2^n%1000000可以用快速幂算法计算,代码如下:

 #include <iostream>
using namespace std; long long fastmod(long long a,long long b,long long c){
long long num=;
a%=c;//这里不进行初始化也是可以的 while(b>){
if(b%==){
num=(num*a)%c;
}
b/=; //这一步将b->log2(b)
a=(a*a)%c;
}
return num;
} int main(){
int n;
cin>>n;
while(n--){
long long m;
cin>>m;
cout<<fastmod(,m,)-<<endl;
}
}

NUOJ 88的更多相关文章

  1. 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)

    建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...

  2. long l=88;这个表达式是正确的,因为long比int类型大,会发生自动转换

    long l=88;这个表达式是正确的,因为long比int类型大,会发生自动转换

  3. 重新想象 Windows 8.1 Store Apps (88) - 通信的新特性: 新的 HttpClient

    [源码下载] 重新想象 Windows 8.1 Store Apps (88) - 通信的新特性: 新的 HttpClient 作者:webabcd 介绍重新想象 Windows 8.1 Store ...

  4. 程序清单 8-8 exec函数实例,a.out是程序8-9产生的可执行程序

    /* ============================================================================ Name : test.c Author ...

  5. #有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66值保存至字典的一个key中,将小于66的值保存至大二个key的值

    #!/usr/bin/env python #有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66值保存至字典的一个key中,将小于66的值保存至大二个ke ...

  6. leetcode 88

    88. Merge Sorted Array Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as on ...

  7. BestCoder Round #88

    传送门:BestCoder Round #88 分析: A题统计字符串中连续字串全为q的个数,预处理以下或加个cnt就好了: 代码: #include <cstdio> #include ...

  8. iisapp 命令 弹出 iisschlp.wsc [88,25] 属性值无效 progid

    iisapp 命令 弹出 iisschlp.wsc [88,25] 属性值无效 progid 在执行iisapp.vbs时,可能会提示如下错误:Windows Script Component - f ...

  9. Part 86 to 88 Talking about Multithreading in C#

    Part 86   Multithreading in C# What is a Process: Process is what the operating system uses to facil ...

随机推荐

  1. js自动切换图片

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 关于Java语言和面向对象记录

    本科时常用的c语言是面向过程的语言,而Java是面向对象的语言 Java语言的11个关键术语 简单性.可移植性.面向对象.分布式.高性能.解释型.健壮性.多线程.安全性.动态性.体系结构中立 面向对象 ...

  3. [moka同学笔记]Linux命令基本格式及目录处理命令

    命令提示符 [root@localhost ~]# root:当前登录用户localhost:主机名~:当前所在的目录,此处为"家"目录#:root超级用户的提示符,如果是普通用户 ...

  4. 前端实战Demo:一张图片搞定一页布局

    对前端程序员来说,从设计师的手中拿过设计图和素材之后根据需要进行切图是必要的基本功,但是一般的程序员可能对切图并非那么熟悉,所以可能有很多时间都花在使用Photoshop上,那么这里就有一种方法可以减 ...

  5. 实用SQL语句大全

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...

  6. 手机浏览器不支持 IDBObjectStore.getAll

    最近在学习IndexDB,使用了IDBObjectStore.getAll,发现手机上不支持. 后面,查阅了mdn:  的确是不支持,且可以看到这个函数现在兼容性很差. 解决方法: 1.使用 IDB ...

  7. iOS UIMenuController菜单

    //1:普通 ////  ViewController.m//  DemoTest#import "ViewController.h"@interface ViewControll ...

  8. Android 学习心得 快速排序

    快速排序(Quicksort) 是对冒泡排序的一种改进,它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分 ...

  9. OC load与initialize

    OC load与initialize load 当类被引用进程序的时候会执行这个函数 一个类的load方法不用写明[super load],父类就会收到调用,并且在子类之前. Category的loa ...

  10. android 性能优化

    本章介绍android高级开发中,对于性能方面的处理.主要包括电量,视图,内存三个性能方面的知识点. 1.视图性能 (1)Overdraw简介 Overdraw就是过度绘制,是指在一帧的时间内(16. ...