博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Open Judge 4010 :2011
阅读量:4028 次
发布时间:2019-05-24

本文共 933 字,大约阅读时间需要 3 分钟。

题面

已知长度最大为200位的正整数n,请求出2011^n的后四位。

Input
第一行为一个正整数k,代表有k组数据,k<=200接下来的k行,
每行都有一个正整数n,n的位数<=200
Output
每一个n的结果为一个整数占一行,若不足4位,去除高位多余的0
Sample Input
3
5
28
792
Sample Output
1051
81
5521

思路

直接暴力解的话肯定超时超到天际,所以就需要进行优化。将小数的多次转换成大数的较少次。

这里写图片描述
按照这个思路,再利用位运算节省时间。

代码

#include
#include
using namespace std;int f(int number,int n,int mod){ int ans=1; number=number%mod; while(n) { if(n&1)//如果n为奇数,就让ans先乘一次number,如果不是,就将number平方,n/2 ans=(ans*number)%mod; n=n>>1; number=(number*number)%mod; } return ans;}int mode(char *str,int N)//大数取模{ int i=0; int number=0; while(str[i]) { number=((number*10)+str[i]-'0')%N; i++; } return number;}int main(){ const int N=1e4; int T; cin>>T; while(T--) { char str[210]; memset(str,0,sizeof(str)); cin>>str; int number=0; number=mode(str,N); cout<
<
你可能感兴趣的文章
朴素贝叶斯算法
查看>>
逻辑回归
查看>>
感知机 - 支持向量机
查看>>
决策树算法(ID3、C4.5、CART)
查看>>
集成学习(Bagging、Boosting、Stacking)
查看>>
无监督学习
查看>>
K均值算法(K-means)
查看>>
机器学习中的损失函数
查看>>
机器学习中的性能度量
查看>>
机器学习中的优化问题
查看>>
机器学习中的参数估计方法
查看>>
机器学习中的特征工程
查看>>
Softmax数值不稳定问题
查看>>
Spark学习笔记(一)——Spark编程
查看>>
奇异值分解(Singular Value Decomposition, SVD)
查看>>
文本处理—LSA、 LDA
查看>>
文本匹配(Text Matching)
查看>>
机器学习中的正则化方法
查看>>
广告学与在线广告
查看>>
计算广告
查看>>