博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1630 求和
阅读量:4561 次
发布时间:2019-06-08

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

题意:求$\sum_{i=1}^a i^b,a,b\le 10^9$

 

  暴力只有30分QAQ(本数学蒟蒻当然想不到正解啦)

正解:模数很小,不难(?)想到$i^a%10000=(i+b)^a %10000$

   因此只需要预处理$\sum_{i=1}^{10000} i^b$

   之后$10001^b%10000=1^b%10000$

     $10002^b%10000=2^b%10000$

     $a^b%10000=(a-k*10000)^b%10000$

  所以$ans=a/10000*f[10000]+f[a%10000]$

 

#include
#include
#include
#include
#include
using namespace std;#define int long long#define olinr return#define _ 0#define love_nmr 0#define DB double#define mod 10000inline int read(){ int x=0,f=1; char ch=getchar(); while(!isdigit(ch)) { if(ch=='-') f=-f; ch=getchar(); } while(isdigit(ch)) { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*f;}inline void put(int x){ if(x<0) { x=-x; putchar('-'); } if(x>9) put(x/10); putchar(x%10+'0');}int T;int a;int b;inline int ksm(int x,int y){ int re=1LL; while(y) { if(y&1) re=re*x%mod; x=x*x%mod; y>>=1; } return re;}int f[10505];signed main(){ T=read(); while(T--) { a=read(); b=read(); f[1]=1; for(int i=2;i<=mod;i++) f[i]=(f[i-1]+ksm(i,b))%mod; put((a/mod*f[mod]+f[a%mod])%mod); putchar('\n'); } olinr ~~(0^_^0)+love_nmr;}

 

转载于:https://www.cnblogs.com/olinr/p/9585010.html

你可能感兴趣的文章
理解同步,异步和延迟脚本
查看>>
Checklist: 2019 05.01 ~ 06.30
查看>>
Binary XML file : Error inflating class com.esri.android.map.MapView
查看>>
grep,awk和sed
查看>>
.NET Core WebAPI IIS 部署问题
查看>>
SystemTap 静态探针安装包
查看>>
redis五种数据类型的使用
查看>>
浏览器全屏之requestFullScreen全屏与F11全屏
查看>>
软件包管理:rpm命令管理-安装升级与卸载
查看>>
旋转图像
查看>>
字符串中的数字(字符串、循环)
查看>>
15.select into
查看>>
运行web项目端口占用问题
查看>>
Java Spring-IOC和DI
查看>>
【NOIP1999】【Luogu1015】回文数(高精度,模拟)
查看>>
Linux上安装Python3.5
查看>>
crt安装
查看>>
git切换分支报错:error: pathspec 'origin/XXX' did not match any file(s) known to git
查看>>
c++中static的用法详解
查看>>
转 我修改的注册表,但是程序运行起来,还是记着以前的
查看>>