『STAOI』G - Round 3 总结

本文讲述了在一场编程竞赛中的解题过程,涉及T1中寻找特定性质快速通过,T2使用深度优先搜索解决简单问题,T3利用Fibonacci数列和模运算求解复杂规律,最后提到T4的难度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:同步发表于洛谷

概述: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吧...... 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值