社区讨论

求dalao

P2613【模板】有理数取余参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lzs7gqck
此快照首次捕获于
2024/08/13 17:13
2 年前
此快照最后确认于
2024/08/13 20:00
2 年前
查看原帖
自己手写了一个check函数,但是快读部分使用出错。后来根据dalao的题解AC了,但是求助其他dalao我这个check函数哪里出错了qwq
(后来用了isdigit函数
AC code:
CPP
#include<bits/stdc++.h>
#define p 19260817
using namespace std;
int x,y,a,b;
/*bool check(char s)
{
	return (s>='0'&&s<='9');
}*/
inline int read()
{
    int res=0,s=getchar();
    while(!isdigit(s)&&s!=EOF) s=getchar();
    while(isdigit(s))
    {
        res=(res<<3)+(res<<1)+(s-'0');
        res%=p;
        s=getchar();
    }
    return res;
}
void exgcd(int a,int b)
{
	if(!b)
	{
		x=1,y=0;
		return;
	}
	exgcd(b,a%b);
	int tx=x;
	x=y;
	y=tx-a/b*y;
}
int main()
{
	a=read(),b=read();
	if(!b)
	{
		puts("Angry!");
		return 0;
	}
	exgcd(b,p);
	x=(x%p+p)%p;
	printf("%lld",((long long)a*(long long)(x))%p);
	
	return 0;
} 

WA code:
CPP
#include<bits/stdc++.h>
#define p 19260817
using namespace std;
int x,y,a,b;
bool check(char s)
{
	return (s>='0'&&s<='9');
}
inline int read()
{
	int res=0;
	char s=getchar();
	while(check(s))
	{
		res=((res<<3)+(res<<1)+(s-'0'))%p;
		s=getchar();	
	} 
	while(!check(s)&&s!=EOF)
	{
		s=getchar();
	}
	return res;
}
void exgcd(int a,int b)
{
	if(!b)
	{
		x=1,y=0;
		return;
	}
	exgcd(b,a%b);
	int tx=x;
	x=y;
	y=tx-a/b*y;
}
int main()
{
	a=read(),b=read();
	if(!b)
	{
		puts("Angry!");
		return 0;
	}
	exgcd(b,p);
	x=(x%p+p)%p;
	printf("%lld",((long long)a*(long long)(x))%p);
	
	return 0;
} 

回复

0 条回复,欢迎继续交流。

正在加载回复...