注:同步发表于洛谷
概述:120pts,rk348,发挥一般,未达到理想成绩。
T1 找性质,找完就过了(8 min AC)
#include<bits/stdc++.h>
using namespace std;
int m,x=1;
signed main()
{
cin>>m;
for(int i=1;i<=m;i++)
{
if(i%3==0)cout<<x<<' ',x++;
else cout<<0<<' ';
}
return 0;
}
T2 一眼不会,没写
(可没想到数据那么水,一个DFS就过了)
T3 找规律,过了 $p \leqslant 5$ 和 $p=2$ 的部分分,20pts
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,t,p,b[]={0,2,0,2,0,0},a[]={0,2,4,3,0,0,1,2,3,0,0,0,0,4,0,0,2,4,0,0};
inline int fib(int m)
{
if(m<=2)return 1;
int x=1,y=1;
for(int i=3;i<=m;++i)swap(x,y),y+=x,x%=p,y%=p;
return y%p;
}
inline int F(int n)
{
int ans=0;
for(int i=1;i<=n;++i)ans+=(fib(i)*fib(i))%p,ans%=p;
return ans%p;
}
inline int sum(int n)
{
int ans=0;
for(int i=1;i<=n;++i)ans+=fib(i)*((F(i-2)+(fib(i)*fib(i))%p+fib(i))%p)%p,ans%=p;
return ans%p;
}
signed main()
{
scanf("%lld",&t);
while(t--)
{
scanf("%lld%lld",&n,&p);
if(p<3)
{
int x=0;
printf("%lld\n",x);
}
else if(p==3)
{
int x=n%8;
if(x==1)puts("2");
else if(x==2)puts("1");
else puts("0");
}
else if(p==4)
{
int x=n%6;
printf("%lld\n",x[tai]);
}
else if(p==5)
{
int x=n%20;
printf("%lld\n",x[mei]);
}
else printf("%lld\n",sum(n)%p);
}
return 0;
}
T4也不会,0pts
比赛分应该能上1200吧......