zoukankan      html  css  js  c++  java
  • HDU 1111 Secret Code (DFS)

    题目链接

    题意 : 给你复数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) ;

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <iostream>
     4 #define   LL __int64
     5 using namespace std ;
     6 
     7 LL xr,xi;
     8 int br,bi ;
     9 LL a[110] ,st;
    10 bool flag ;
    11 void dfs(LL r,LL i,int step)
    12 {
    13     if(step > 100) return ;
    14     if(flag) return ;
    15     if(r == 0 && i == 0)
    16     {
    17         flag = true ;
    18         st = step ;
    19         return ;
    20     }
    21     for(int j = 0 ; j * j < br*br+bi*bi ; j++)
    22     {
    23         LL xx = (r-j)*br+i*bi;
    24         LL yy = (i*br)-(r-j)*bi;
    25         a[step] = j ;
    26         if(xx % (br*br+bi*bi) == 0  && yy % (br*br+bi*bi) == 0)
    27             dfs(xx / (br*br+bi*bi) , yy / (br*br+bi*bi),step+1) ;
    28         if(flag) return ;
    29     }
    30 }
    31 int main()
    32 {
    33     int T;
    34     scanf("%d",&T) ;
    35     while(T--)
    36     {
    37         memset(a,0,sizeof(a)) ;
    38         st = 0 ;
    39         flag = false ;
    40         scanf("%I64d %I64d %d %d",&xr,&xi,&br,&bi) ;
    41         dfs(xr,xi,0) ;
    42         if(!flag) puts("The code cannot be decrypted.");
    43         else {
    44             printf("%I64d",a[st-1]) ;
    45             for(int i = st-2 ; i >= 0 ; i -- )
    46             {
    47                 printf(",%I64d",a[i]) ;
    48             }
    49             puts("") ;
    50         }
    51     }
    52     return 0 ;
    53 }
    View Code
  • 相关阅读:
    打造好团队
    为什么要先订一个小目标
    什么叫上层次?
    信息系统的数据大分类
    系统有问题基本出在数据库上,web层无状态
    20155201 预备作业02
    预备作业01:你期望的师生关系是什么?
    laravel 获取当前路由 和url
    laravel -admin 禁止某一行删除
    laravel-admin 密码加密
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/4123735.html
Copyright © 2011-2022 走看看