简简单单的数学题
程序员文章站
2022-04-28 08:36:20
...
法一:快速幂+__int128
_int128 类型的数据是大整数类型,貌似只可以在Linux操作系统环境下的gcc编译器才可以使用,但是C99标准未提供,__int128 编译不给过,调试很费劲,但判题没问题,能过。
法二:(高精度)
乘法优化成两部分:大于1e6以及小于1e6的分开
p=1e6;
(((x*(y/p))%mod)p)%mod+(x(y%p))%mod;
法三:(longdouble):很强…
简化:
(xy-(ll)((long double)xy/mod)*mod+mod)%mod;
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<set>
#include<map>
#include<iterator>
#include<queue>
#include<vector>
#include<string>
using namespace std;
typedef long long ll;
const int N=1e6+10;
const long long INF=1e18;
const double eps=0.0000001;
const ll mod=1e12;
ll Pow(ll a,ll b){
__int128 res=1;
__int128 base=a%mod;
while(b){
if(b&1)res=(res*base)%mod;
base=(base*base)%mod;
b>>=1;
}
return res;
}
int main()
{
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
double a,b,c;
ll k,d,n,ans;
cin>>a>>b>>c;
ll A=(ll)floor(a)%mod;
ll B=(ll)ceil(b)%mod;
ll C=(ll)floor(c+0.5)%mod;
cin>>k;
while(k--)
{
cin>>d>>n;
ans=(((A+B)%mod+C)%mod+Pow(d,n))%mod;
cout<<ans<<"\n";
}
}
上一篇: scrapy抓斗鱼主播的图片
下一篇: 数据可视化 - 百度地图人行小路