链接:https://ac.nowcoder.com/acm/contest/893/C
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
已知整数a,a3a,a3除192的余数是1。求区间[L,R]之间满足条件的a的累加和是多少?
输入描述:
第一行是一个整数T(1≤T≤10000)T(1≤T≤10000),表示样例的个数。
每个样例包含两个整数L,R,1≤L≤R≤109L,R,1≤L≤R≤109。
输出描述:
每行输出一个样例的结果。
示例1
输出
复制1
思路:判断最左边的和最右边的,等差数列求和,注意long long
代码:
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<queue> #include<stack> #include<set> #include<vector> #include<map> #include<cmath> const int maxn=1e5+5; typedef long long ll; using namespace std; int main() { int T; cin>>T; int L,R; while(T--) { scanf("%d%d",&L,&R); ll k1,k2; k1=L/192; if(L%192!=1&&L%192!=0) { k1++; } k2=R/192; if(R%192==0) { k2--; } ll s0=k1*192+1; ll sn=k2*192+1; ll s=(s0+sn)*(k2-k1+1)/2; printf("%lld ",s); } return 0; }