project euler 48 Self powers 解决乘法爆long long
2024-08-26 14:50:32
题目链接
求 $ 11+22+\cdots + 1000^{1000} $ %1e10 的结果。
唯一的坑点是会爆longlong, 所以用特殊的乘法。
#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <complex>
#include <cmath>
#include <map>
#include <set>
#include <string>
#include <queue>
#include <stack>
#include <bitset>
using namespace std;
#define pb(x) push_back(x)
#define ll long long
#define mk(x, y) make_pair(x, y)
#define lson l, m, rt<<1
#define mem(a) memset(a, 0, sizeof(a))
#define rson m+1, r, rt<<1|1
#define mem1(a) memset(a, -1, sizeof(a))
#define mem2(a) memset(a, 0x3f, sizeof(a))
#define rep(i, n, a) for(int i = a; i<n; i++)
#define fi first
#define se second
typedef complex <double> cmx;
typedef pair<int, int> pll;
const double PI = acos(-1.0);
const double eps = 1e-8;
const ll mod = 1e10;
const int inf = 1061109567;
const int dir[][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} };
ll mul(ll a, ll b) {
ll ret = 0;
while(b) {
if(b&1) {
ret += a;
if(ret >= mod)
ret -= mod;
}
a += a;
if(a >= mod)
a -= mod;
b >>= 1;
}
return ret;
}
ll pow(ll a, ll b) {
ll ret = 1;
while(b) {
if(b&1) {
ret = mul(ret, a)%mod;
}
a = mul(a, a)%mod;
b >>= 1;
}
return ret;
}
int main()
{
ll sum = 0;
for(ll i = 1; i <= 1000; i++) {
sum = (sum + pow(i, i))%mod;
}
cout<<sum<<endl;
return 0;
}
最新文章
- Charles常用的十大功能
- unity 环境增强
- EBS常用小常识(转)
- jsp常用JSTL
- NoSQL数据库有哪些
- 267. Palindrome Permutation II
- [swustoj 785] Divide Tree
- window.open 使用方法总结
- hdu1255(线段树——矩形面积交)
- Webpack 4教程 - 第四部分,使用SplitChunksPlugin分离代码
- 2018-2019-2 20165231《网络对抗技术》Exp0 Kali安装 Week1
- android dialog设置全屏半透明背景色
- spring管理的类如何调用非spring管理的类
- js 获取当前日期或者前、后N天yyyy-MM-dd的方法
- OSX 10.13 以后实现终端FTP命令(转)
- hadoop2.4集群的搭建
- 【转】MPU6050的数据获取、分析与处理
- div光标
- Maven Package Plugins And Maven Test
- 如何解决Visual Studio2010 编译时提示系统找不到指定文件问题