题目:http://noi.openjudge.cn/ch0204/2991/

总时间限制:1000ms  内存限制: 65536kB
描述
已知长度最大为200位的正整数n,请求出2011^n的后四位。
输入
第一行为一个正整数k,代表有k组数据,k<=200接下来的k行,

每行都有一个正整数n,n的位数<=200

输出
每一个n的结果为一个整数占一行,若不足4位,去除高位多余的0
样例输入
3
5
28
792
样例输出
1051
81
5521

参考:

利用循环节:http://m.blog.csdn.net/u013675643/article/details/51820648

高精度除法:http://blog.csdn.net/qq_35479641/article/details/51810945

下面的思路参照循环节的做法。

题目只需要输出后四位,因此答案必然有一个最多5位数的循环节。于是可以先写个暴力去找循环节,发现循环节长度为500,这个数就很好处理了。后面读入n时只保留后三位数,再mod500就得出答案了,比写高精度简单多了~

 #include<stdio.h>
#include<string.h>
// m^n % k
long long quickpow(long long m,long long n,long long k)
{
long long ans = ;
while (n > )
{
if (n & )
ans = (ans*m)%k;
n = n >> ;
m = (m*m)%k;
}
return ans;
}
int main(int argc, char *argv[])
{
int k;
int i;
char n[];
int N,len;
scanf("%d",&k);
for(i=;i<k;i++)
{
scanf("%s",n);getchar();
N=;
len=strlen(n);
N=n[len-]-'';
if(len>=) N=(n[len-]-'')*+N;
if(len>=) N=(n[len-]-'')*+N;
if(len>=) N=(n[len-]-'')*+N;
N=N%;
printf("%lld\n",quickpow(,N,));
}
return ;
}

暴力寻找循环节的一个简单操作:

 #include <stdio.h>

 long long quickpow(long long m,long long n,long long k)//返回m^n % k的结果
{
long long ans = ;
while (n > )
{
if (n & )
ans = (ans*m)%k;
n = n >> ;
m = (m*m)%k;
}
return ans;
}
int main(int argc, char *argv[])
{
freopen("data.txt","w",stdout);
int A[],B[];
for(int i=;i<;i++)
{
//printf("%d\n",quickpow(2011,i,10000));
A[i]=quickpow(,i,);
} for(int i=;i<;i++)
{
for(int j=i+;j<;j++)
{
if(A[i]==A[j]) { B[i]=j;break; }
}
}
for(int i=;i<;i++)
{
printf("%d %d\n",A[i],B[i]);
}
return ;
}

还有一个数学论证:http://blog.csdn.net/li744831579/article/details/8784547

2011的n次方的更多相关文章

  1. 2991:2011 求2011^n的后四位。

    2991:2011 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 已知长度最大为200位的正整数n,请求出2011^n的后四位. 输入 第一行为一个正整数k ...

  2. Image Processing and Analysis_8_Edge Detection:Edge and line oriented contour detection State of the art ——2011

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  3. NOI2.4 2011

    描述 已知长度最大为200位的正整数n,请求出2011^n的后四位. 输入 第一行为一个正整数k,代表有k组数据,k<=200接下来的k行, 每行都有一个正整数n,n的位数<=200 输出 ...

  4. [C#项目开源] MongoDB 可视化管理工具 (2011年10月-至今)

    正文 该项目从2011年10月开始开发,知道现在已经有整整5年了.MongoDB也从一开始的大红大紫到现在趋于平淡. MongoCola这个工具在一开始定位的时候只是一个Windows版本的工具,期间 ...

  5. BZOJ 2440: [中山市选2011]完全平方数 [容斥原理 莫比乌斯函数]

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3028  Solved: 1460[Submit][Sta ...

  6. [LeetCode] Super Pow 超级次方

    Your task is to calculate ab mod 1337 where a is a positive integer and b is an extremely large posi ...

  7. [LeetCode] Power of Four 判断4的次方数

    Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example: Gi ...

  8. [LeetCode] Power of Three 判断3的次方数

    Given an integer, write a function to determine if it is a power of three. Follow up:Could you do it ...

  9. [LeetCode] Power of Two 判断2的次方数

    Given an integer, write a function to determine if it is a power of two. Hint: Could you solve it in ...

随机推荐

  1. [转]pear windows 安装

    FROM : http://jingyan.baidu.com/article/ca41422fd8cf3d1eae99ed3e.html 因为想使用phpdocument生成文档,不得不安装pear ...

  2. 解决MTP device安装失败,手机无法被读取

    操作步骤: 1.  我的电脑—>管理—>设备管理器—>便携设备(MTP)-->右击-更新驱动 2.  选择浏览计算机以查找驱动程序软件—>从计算机列表选择—>MTP ...

  3. Go语言之进阶篇TCP相互通信

    1.TCP相互通信 服务端示例: tcp_server.go package main import ( "fmt" "net" ) func main() { ...

  4. Jquery取得iframe中元素的几种方法(转载)

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作 DOM方法:父窗口操作IFRAME:window.frames["iframeSon ...

  5. Android传感器应用——重力传感器实现滚动的弹球

    一. 问题描述 Android中有多达11种传感器,不同的手机设备支持的传感器类型也不尽相同 1. 重力传感器 GV-sensor 2. 加速度传感器 G-sensor 3.  磁力传感器  M-se ...

  6. C语言变长数组data[0]【总结】

    1.前言 今天在看代码中遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内核中,结构体中经常用到data ...

  7. Linux下C结构体初始化[总结]

    1.前言 今天在公司看一同事写的代码,代码中用到了struct,初始化一个struct用的是乱序格式,如下代码所示: typedef struct _data_t { int a; int b; }d ...

  8. 3分钟搞定Linux系统正则表达式

    正则表达式是一种字符模式,用于在查找过程中匹配制定的字符. 元字符通常在Linux中分为两类:Shell元字符,由Linux Shell进行解析:正则表达式元字符,由vi/grep/sed/awk等文 ...

  9. Java-JUC(六):创建线程的4种方式

    Java创建线程的4种方式: Java使用Thread类代表线程,所有线程对象都必须是Thread类或者其子类的实例.Java可以用以下4种方式来创建线程: 1)继承Thread类创建线程: 2)实现 ...

  10. retrofit+RXjava二次封装

    接入说明:项目中已集成RXjava,RXandroid.Retrofit,为避免包冲突,不须要再次接入. 就可以直接使用RXjava,Retrofit的所有api. github地址:https:// ...