您的位置:首页 > 其它

hdu 1111 Secret Code

2014-08-01 16:37 281 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1111

复数除法:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int a[110];
__int64 n;
int x1,y1,b1,b2;
int t1;
bool flag;

void dfs(int cnt)
{
if(cnt>100) return;
if(x1==0&&y1==0)
{
flag=true;
t1=cnt;
return;
}
for(int i=0; i*i<=n; i++)
{
if(flag) return;
__int64  xx=(x1-i)*b1+y1*b2;
__int64  yy=y1*b1-(x1-i)*b2;
if(xx%n==0&&yy%n==0)
{
x1=xx/n;
y1=yy/n;
a[cnt]=i;
dfs(cnt+1);
}
}
}

int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d",&x1,&y1,&b1,&b2);
n=b1*b1+b2*b2;
flag=false;
dfs(0);
if(!flag)
{
printf("The code cannot be decrypted.\n");
}
else
{
printf("%d",a[t1-1]);
for(int i=t1-2; i>=0; i--)
{
printf(",%d",a[i]);
}
printf("\n");
}
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: