•https://vjudge.net/problem/LightOJ-1306
•http://acm.hdu.edu.cn/showproblem.php?pid=1576
•http://acm.hdu.edu.cn/showproblem.php?pid=5651
•http://www.lightoj.com/volume_showproblem.php?problem=1306
•http://acm.hdu.edu.cn/showproblem.php?pid=2669
HDU 1576
```
要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。
每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。
2 1000 53 87 123456789
7922 6060
```
#include<stdio.h>
void exgcd(int a,int b,int &x,int &y) {
if(!b) x=1, y=0;
else {
exgcd(b,a%b,y,x);
y-=(a/b)*x;
}
}
int main() {
int T,a,b,x,y;
scanf("%d",&T);
while(T--) {
scanf("%d%d",&a,&b);
exgcd(b,9973,x,y);
printf("%d\n",(1LL*a*x%9973+9973)%9973);
}
}
HDU 5651
```
众所周知,小新是一个辉煌的编码器。当他只是一个六年级的学生时,他认识到**回文**弦。
今年夏天,他在腾讯公司工作。有一天,他的领导来了求救喔。他的领导给了他一个字符串,他希望小新为他生成回文字串。一旦小毒素产生不同的回文串,他的领导将给他一个西瓜糖。问题是小妞的领导需要买多少糖果?
今年夏天,他在腾讯公司工作。有一天,他的领导来了求救喔。他的领导给了他一个字符串,他希望小新为他生成回文字串。一旦小毒素产生不同的回文串,他的领导将给他一个西瓜糖。问题是小妞的领导需要买多少糖果?
对于每个测试用例,有一行包含字符串 S (1≤leng吨ħ (小号)≤1,000) .
3 AA AABB 一个
1
2
1
```
#include<stdio.h>
#include<string.h>
#define mod 1000000007
int T,len,cnt[26],vis,f[1010],inv[1010],ans;
char s[1010];
void exgcd(int a,int b,int &x,int &y) {
if(!b) x=1,y=0;
else {
exgcd(b,a%b,y,x);
y-=(a/b)*x;
}
}
int getinv(int k) {
int x,y;
exgcd(k,mod,x,y);
return (x%mod+mod)%mod;
}
void setf() {
f[0]=1;
for(int i=1;i<=1000;i++) f[i]=1LL*f[i-1]*i%mod;
inv[1000]=getinv(f[1000]);
for(int i=999;i>=0;i--) inv[i]=1LL*inv[i+1]*(i+1)%mod;
}
int main() {
setf();
scanf("%d",&T);
while(T--) {
memset(cnt,0,sizeof cnt);
vis=0; ans=0;
scanf("%s",s);
len=strlen(s);
for(int i=0;i<len;i++) cnt[s[i]-'a']++;
for(int i=0;i<26;i++) {
if(cnt[i]&1) {
if(vis) {
puts("0"); goto Next;
}
vis=1;
}
cnt[i]>>=1;
}
ans=f[len>>1];
for(int i=0;i<26;i++) {
ans=1LL*ans*inv[cnt[i]]%mod;
}
printf("%d\n",ans);
Next:;
}
}
```
天空是雪碧。
鸟在天空飞翔。
风是美好的
Blew投掷树木
树木正在摇摆,叶子落下。
恋人走过,你也是。
................................由yifenfei写英文课
女孩聪明聪明。在HDU每个女孩喜欢数学。每个女孩都喜欢解决数学问题!
现在告诉你两个非负整数a和b。找到非负整数X和整数Y以满足X * a + Y * b = 1。如果没有这样的答案打印“对不起”。
鸟在天空飞翔。
风是美好的
Blew投掷树木
树木正在摇摆,叶子落下。
恋人走过,你也是。
................................由yifenfei写英文课
女孩聪明聪明。在HDU每个女孩喜欢数学。每个女孩都喜欢解决数学问题!
现在告诉你两个非负整数a和b。找到非负整数X和整数Y以满足X * a + Y * b = 1。如果没有这样的答案打印“对不起”。
每种情况下两个非负整数a,b(0 <a,b <= 2 ^ 31)
77 51 10 44 34 79
2 -3
抱歉
7 -3
```
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <vector>
#define ll long long
using namespace std;
ll exgcd(ll a, ll b, ll &x, ll &y)
{
if(b==0)
{
x=1;
y=0;
return a;
}
ll r=exgcd(b,a%b,x,y),t;
t=x;
x=y;
y=t-(a/b)*y;
return r;
}
int main()
{
ll a,b,x,y;
while(~scanf("%lld%lld",&a,&b))
{
ll g=exgcd(a,b,x,y);
if(g==1)
{
printf("%lld %lld\n",(x%b+b)%b,(y%a-a)%a);
}
else
puts("sorry");
}
}
POJ 1061
```
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。
我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。
我们把这两只青蛙分别叫做青蛙A和青蛙B,并且规定纬度线上东经0度处为原点,由东往西为正方向,单位长度1米,这样我们就得到了一条首尾相接的数轴。设青蛙A的出发点坐标是x,青蛙B的出发点坐标是y。青蛙A一次能跳m米,青蛙B一次能跳n米,两只青蛙跳一次所花费的时间相同。纬度线总长L米。现在要你求出它们跳了几次以后才会碰面。
输入只包括一行5个整数x,y,m,n,L,其中x≠y < 2000000000,0 < m、n < 2000000000,0 < L < 2100000000。
输出碰面所需要的跳跃次数,如果永远不可能碰面则输出一行"Impossible"
1 2 3 4 5
4```
#include<stdio.h>
#define LL long long
LL exgcd(LL a,LL b,LL &x,LL &y) {
if(!b) {x=1; y=0; return a; }
else {
LL t=exgcd(b,a%b,y,x);
y-=(a/b)*x;
return t;
}
}
LL x,y,m,n,l;
LL a,b,c;
int main() {
scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&l);
a=m-n; b=l; c=y-x;
LL gcd=exgcd(a,b,x,y);
if(c%gcd) return puts("Impossible"), 0;
x*=1LL*c/gcd;
printf("%lld",(x%b+b)%b);
}