题目链接

题意 : 给你复数X的Xr和Xi,B的Br和Bi,让你求一个数列,使得X = a0 + a1B + a2B2 + ...+ anBn,X=Xr+i*Xi,B=Br+Bi*i ;

思路 : 首先要知道复数的基本运算,题目中说0 <= ai < |B| ,|B|代表的是复数的模,|B|=√(Br*Br+Bi*Bi)。将题目中给定的式子X = a0 + a1B + a2B2 + ...+ anBn,进行变型得:X=a0 + (a1 + (a2 + ...(an-1+ an*B))) 。所以这里深搜枚举a的值,从X开始减掉a再除以B,然后看是否成立,是否都为整数,因此要用到复数的除法:(a+bi)/(c+di)=(ac+bd)/(c^2+d^2)+(bc-ad)/(c^2+d^2) ;

 #include <stdio.h>
#include <string.h>
#include <iostream>
#define LL __int64
using namespace std ; LL xr,xi;
int br,bi ;
LL a[] ,st;
bool flag ;
void dfs(LL r,LL i,int step)
{
if(step > ) return ;
if(flag) return ;
if(r == && i == )
{
flag = true ;
st = step ;
return ;
}
for(int j = ; j * j < br*br+bi*bi ; j++)
{
LL xx = (r-j)*br+i*bi;
LL yy = (i*br)-(r-j)*bi;
a[step] = j ;
if(xx % (br*br+bi*bi) == && yy % (br*br+bi*bi) == )
dfs(xx / (br*br+bi*bi) , yy / (br*br+bi*bi),step+) ;
if(flag) return ;
}
}
int main()
{
int T;
scanf("%d",&T) ;
while(T--)
{
memset(a,,sizeof(a)) ;
st = ;
flag = false ;
scanf("%I64d %I64d %d %d",&xr,&xi,&br,&bi) ;
dfs(xr,xi,) ;
if(!flag) puts("The code cannot be decrypted.");
else {
printf("%I64d",a[st-]) ;
for(int i = st- ; i >= ; i -- )
{
printf(",%I64d",a[i]) ;
}
puts("") ;
}
}
return ;
}

HDU 1111 Secret Code (DFS)的更多相关文章

  1. hdu.1111.Secret Code(dfs + 秦九韶算法)

    Secret Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  2. HDU 1111 Secret Code(数论的dfs)

    Secret Code Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit ...

  3. hdu 1111 Secret Code

    http://acm.hdu.edu.cn/showproblem.php?pid=1111 复数除法: #include <cstdio> #include <cstring> ...

  4. [swustoj 679] Secret Code

    Secret Code 问题描述 The Sarcophagus itself is locked by a secret numerical code. When somebody wants to ...

  5. Android Secret Code

    我们很多人应该都做过这样的操作,打开拨号键盘输入*#*#4636#*#*等字符就会弹出一个界面显示手机相关的一些信息,这个功能在Android中被称为android secret code,除了这些系 ...

  6. Android 编程下的 Secret Code

    我们很多人应该都做过这样的操作,打开拨号键盘输入 *#*#4636#*#* 等字符就会弹出一个界面显示手机相关的一些信息,这个功能在 Android 中被称为 Android Secret Code, ...

  7. The secret code

    The secret code Input file: stdinOutput file: stTime limit: 1 sec Memory limit: 256 MbAfter returnin ...

  8. 洛谷 P3102 [USACO14FEB]秘密代码Secret Code 解题报告

    P3102 [USACO14FEB]秘密代码Secret Code 题目描述 Farmer John has secret message that he wants to hide from his ...

  9. HDOJ(HDU).2660 Accepted Necklace (DFS)

    HDOJ(HDU).2660 Accepted Necklace (DFS) 点我挑战题目 题意分析 给出一些石头,这些石头都有自身的价值和重量.现在要求从这些石头中选K个石头,求出重量不超过W的这些 ...

随机推荐

  1. python学习(二十一) Python 中的链式赋值

    Python的链式赋值如下:

  2. Oracle定时值执行存储过程

    declare      jobno number;    begin      dbms_job.submit(     jobno,     'p_dosomething;',  --what   ...

  3. 使用nginx反向代理进行负载均衡

    在这里简单记录一下,我使用Nginx反向代理进行负载均衡,将请求发送到两台tomcat上. 首先解压两个tomcat,解压Nginx,一台tomcat配置可以不用动,但是我为了更方便只是将它的端口改为 ...

  4. EDMX 残余表信息清理方法

    今天出现的edmx报错,怎么也无法删除的问题,解决了.1.打开edxm2.删除所有表模型3.右键,选择模型浏览器4.在实体类型查看是否还有没有删除的模型如果有,点击删除5.重新生成edxm.解决问题.

  5. App切图命名规范

    转自:http://www.uisdc.com/slice-rename-in-ui-design(略有修改) 关于切图命名的规范,我个人觉得关键是在于团队能够有一个统一的规则,所有成员严格遵守并且和 ...

  6. vector array and normal stanard array

    array 数组的长度固定 vector 自由存储区(栈),动态长度 普通标准数组相对较不安全,不方便; array,vector对象成员函数支持数组越界检测,同时代价是效率问题: array,普通标 ...

  7. tornado 自定义session (一)

    tornado 中没有session功能,需要我们自己实现. 目录: settings: settings = { 'template_path': 'templates', 'static': 's ...

  8. 跟我学算法-SVM(支持向量机)

    支持向量机是一个点离决策边界越近,离决策面越远的问题 求解的过程主要是通过拉格朗日乘子法,来求解带约束的优化问题,在问题中涉及两个方面,一个是线性的,一个是非线性的,非线性的有 我们平时比较常见的高斯 ...

  9. 数字1的ASCII值是多少

    ASCII表是计算机将字符转为数字存储的一张转换表.因此,只有字符才有ASCII值,数字是没有的. 答案:数字1没有ASCII值,数字1在计算机中就是按数值1存储的. 字符1的ASCII值是 49

  10. javax.persistence.TransactionRequiredException: No transactional EntityManager available

    在操作中加上@Transcational注解,一般是用于修改或者删除操作.