提交 spj
  • 板块学术版
  • 楼主Karry5307Rikka
  • 当前回复9
  • 已保存回复9
  • 发布时间2020/9/5 21:27
  • 上次更新2023/11/5 13:40:23
查看原帖
提交 spj
60990
Karry5307Rikka楼主2020/9/5 21:27

本来应该是发到 P5580 的,结果那里不知道为啥不能发帖子就发到这里来了:

#include "testlib.h"
#include<bits/stdc++.h>
typedef long long int ll;
using std::string;
using std::to_string;
inline ll mul(ll x,ll y,ll md)
{
	ll res=0;
	while(y)
	{
		if(y&1)
		{
			res=(res+x)%md;
		}
		x=(x+x)%md,y>>=1;
	}
	return res;
}
inline void fib(ll n,ll &x,ll &y,ll md)
{
	ll u,v;
	if(n==0||n==1)
	{
		return (void)(x=n,y=1);
	}
	if(n&1)
	{
		return (void)(fib(n-1,y,x,md),y=(y+x)%md);
	}
	fib(n>>1,u,v,md),y=(mul(u,u,md)+mul(v,v,md))%md;
	x=(mul(u,v,md)+mul(u,v>u?v-u:v-u+md,md))%md;
}
inline ll fib(ll n,ll md)
{
	ll x,y;
	return fib(n,x,y,md),x;
}
int main(int argc,char* argv[])
{
	registerTestlibCmd(argc,argv);
	string in=inf.readString();
	ll md=pow(10,in.length()),out=ouf.readLong(0,(ll)9e18);
	ll res=fib(out,md);
	while(in[0]=='0')
	{
		in.erase(0,1);
	}
	if(to_string(res)==in)
	{
		quitf(_ok,"zkdxl AK IOI!");
	}
	else
	{
		quitf(_wa,">_<");
	}
}
2020/9/5 21:27
加载中...