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
  • 相关阅读:
    ABP框架系列之六:(Value-Objects-值对象)
    ElementUI如何展开指定Tree树节点
    JS如何将变量作为一个对象的Key
    分布式追踪系统架构与设计
    11.浅聊几种主流Docker网络的实现原理
    Python连接MongoDB数据库并执行操作
    1.ZooKeeper ACL权限控制
    Pika 连接 rabbitmq 集群
    js for等循环 跳出多层循环
    Django ForeignKey不需要参照完整性?
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/4123735.html
Copyright © 2011-2022 走看看