水题
/****************************************************
* author:crazy_石头
* Pro:Jobdu
* algorithm:快速幂
* Time:32ms
* Judge Status:Accepted
*******************************************************/
#pragma comment(linker, "/STACK:102400000,102400000")
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
#define rep(i,h,n) for(int i=(h);i<=(n);i++)
#define ms(a,b) memset((a),(b),sizeof(a))
#define eps 1e-8
#define INF 1<<29
#define LL __int64
const int maxn=100000+5;
const int mod=200907;
inline LL quick_mod(LL a,LL n)
{
LL ret=1;
while(n)
{
if(n&1)ret=ret*a%mod;
n>>=1;
a=a*a%mod;
}
return ret;
}
int main()
{
int test;
scanf("%d",&test);
while(test--)
{
LL a,b,c,k;
LL d,q;
LL ans;
scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&k);
if(a+c==2*b)//等差数列;写出通项;
{
d=b-a;//计算公差;
ans=((k-1)%mod*(d%mod)+a%mod)%mod;
printf("%I64d\n",ans);
}
else //等比数列,用通项求;
{
q=b/a;
ans=((a%mod)*quick_mod(q,k-1))%mod;
printf("%I64d\n",ans);
}
}
return 0;
}
水题。
/****************************************************
* author:crazy_石头
* Pro:Jobdu
* algorithm:Euler 函数
* Time:32ms
* Judge Status:Accepted
*******************************************************/
#pragma comment(linker, "/STACK:102400000,102400000")
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
#define rep(i,h,n) for(int i=(h);i<=(n);i++)
#define ms(a,b) memset((a),(b),sizeof(a))
#define eps 1e-8
#define INF 1<<29
#define LL __int64
const int maxn=3000000+5;
int a[maxn];
bool used[maxn];
inline void Euler() //欧拉打表。
{
int i,j;
for(i=2;i<=maxn;i++)a[i]=i;
a[1]=0;
for(i=2;i<=maxn;i++)
if(used[i]==false)
{
for(j=i;j<=maxn;j+=i)
{
a[j]=a[j]/i*(i-1);
used[j]=true;
}
}
}
int main()
{
int n,m,i;
LL ret;
Euler();
while(scanf("%d%d",&n,&m)==2)
{
ret=0;
rep(i,n,m)ret+=a[i];
printf("%I64d\n",ret);
}
return 0;
}