#include"iostream"
using namespace std;
int main()
{
int a,b,c[4],t,cnt;
while(cin>>a>>b)
{
t=a%10;
c[1]=t;
c[2]=t*c[1]%10;
c[3]=t*c[2]%10;
c[0]=t*c[3]%10;
cnt=c[b%4];
cout<<cnt<<endl;
}
return 0;
}
一个数的任何次方一共只有四种情况,分别列出这四种情况后取余幂就可以知道尾数是多少。
CodeForces 1217A
#include"iostream"
#include"algorithm"
using namespace std;
int main()
{
int t,a,b,c,d;
cin>>t;
while(t--)
{
cin>>a>>b>>c;
int d=max(0,(b+c-a+2)/2);
int ans=max(0,c-d+1);
cout<<ans<<endl;
}
return 0;
}
给定 m, n ,exp ,问将exp 分配给 m和 n 保证 m > n 有多少种分法
设给 m 加 d ,则m + d >n+(exp -d)
2d> n + exp - m
2d >= n + exp - m + 1
addm>=(n + exp - m + 1 ) / 2;
因为要向下取整 ,所以d>(n + exp - m + 2 ) / 2;
所以最少给m 加(n + exp - m + 2 ) / 2
ans=max(exp - d+ 1, 0);
CodeForces 1272A
#include"iostream"
#include"algorithm"
using namespace std;
int main()
{
long long t,a,b,c,Max,Min;
cin>>t;
while(t--)
{
long long ans=0;
cin>>a>>b>>c;
Max=max(a,max(b,c));
Min=min(a,min(b,c));
ans=(Max-1-(Min+1))*2;
if(ans>=0)
cout<<ans<<endl;
else
cout<<"0"<<endl;
}
return 0;
}
贪心,用最大的位置减去最小的位置的二倍,因为可以移动,所以让最大的位置减1,最小的位置加1。
CodeForces 1257A
#include"iostream"
#include"algorithm"
#include"cmath"
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,x,a,b;
cin>>n>>x>>a>>b;
cout<<min(abs(a-b)+x,n-1)<<endl;
}
return 0;
}