懒得打字的yzj丢了道简单的数学题。 ⌊a⌋ +⌈b⌉+c(四舍五入)+d^n; (d^n表示d的n次方)。 解释一下 就是a向下取整 b向上取整 c四舍五入的和加上d的n次方
输入
第一行3个数 a,b,c。0
第二行一个数q 表示q次查询 q<=2e5
每次查询2个整数 d,n。 0
输出
每次查询输出一个答案(取模1e12);
样例输入
1.9 2.1 2.2
1
2 2
样例输出
10
爆longlong三种处理方式
1.__int128 此类型只能在Linux上编译,本地编译不了,但可ac
2.将1e12的数分开乘
快速版本:
乘法优化成两部分:
大于1e6以及小于1e6的分开
p=1e6;
(((x*(y/p))%mod)*p)%mod+(x*(y%p))%mod;
龟速版本:
化成对应二进制一位一位的乘(此题tle)
ll ans = 0;
while(b) {
if(b & 1) ans = (ans + a ) ;
if(ans>mod) ans%=mod;
b >>= 1;
a<<=1;
if(a>mod) a%=mod;
}
3.转化成long double(最强)
简化:
(x*y-(ll)((long double)x*y/mod)*mod+mod)%mod;
#include
#define fi first
#define se second
#define log2(a) log(n)/log(2)
#define show(a) cout<