Secret Code

问题描述

The Sarcophagus itself is locked by a secret numerical code. When somebody wants to open it, he must know the code and set it exactly on the top of the Sarcophagus. A very intricate mechanism then opens the cover. If an incorrect code is entered, the tickets inside would catch fire immediately and they would have been lost forever. The code (consisting of up to 100 integers) was hidden in the Alexandrian Library but unfortunately, as you probably know, the library burned down completely.

But an almost unknown archaeologist has obtained a copy of the code something during the 18th century. He was afraid that the code could get to the ``wrong people'' so he has encoded the numbers in a very special way. He took a random complex number B that was greater (in absolute value) than any of the encoded numbers. Then he counted the numbers as the digits of the system with basis B. That means the sequence of numbers anan-1, ..., a1a0 was encoded as the number

X = a0 + a1B + a2B2 + ...+ anBn.

Your goal is to decrypt the secret code, i.e. to express a given number X in the number system to the base B. In other words, given the numbers X and Byou are to determine the ''digit'' a0 throughan.

输入

The input consists of T test cases. The number of them (T) is given on the first line of the input file. Each test case consists of one single line containing four integer numbers Xr, Xi, BrBi (|Xr|,|Xi| <= 1000000|Br|,|Bi| <= 16). These numbers indicate the real and complex components of numbers X and B, i.e. X = Xr + i.XiB = Br + i.BiB is the basis of the system (|B| > 1), X is the number you have to express.

输出

Your program must output a single line for each test case. The line should contain the ''digits'' anan-1, ..., a1a0, separated by commas. The following conditions must be satisfied:

    • for all i in {0, 1, 2, ...n}0 <= ai < |B|
    • X = a0 + a1B + a2B2 + ...+ anBn
    • if n > 0 then an <> 0
    • n <= 100

If there are no numbers meeting these criteria, output the sentence "The code cannot be decrypted.". If there are more possibilities, print any of them.

样例输入

4
-935 2475 -11 -15
1 0 -3 -2
93 16 3 2
191 -192 11 -12

样例输出

8,11,18
1
The code cannot be decrypted.
16,15

同HDU 1111

题意:给定复数s和复数k,求整数序列ai使得\(s = a_{0}*k^0 + a_{1}*k^1 + a_{2}*k^2 + ...+ a_{n}*k^n\),其中\(n<=100\),\(0<=a_{i}<|k|\),\(|k|>1\)
分析:整式变型得:\(s=a_{0}+(a_{1}+(a_{2}+...)*k)*k\)

复习一下复数运算:
A、若\(z=a+b*i\)
     则\(|z|=\sqrt{a^{2}+b^{2}}\)
B、若\(z1=a+b*i\),\(z2=c+d*i\)
     则:\(z1/z2\)
          \(=(a+b*i)/(c+d*i)\)
          \(=(a+b*i)*(c-d*i)/[(c+d*i)*(c-d*i)]\) 同时乘分母的共轭复数
          \(=(ac+bd)/(c^2+d^2)+[(bc-ad)/(c^2+d^2)]*i\)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
#define N 10010 struct Complex
{
ll x,y;
Complex(){}
Complex(ll x,ll y):x(x),y(y){}
ll mode2(){return x*x+y*y;}
Complex operator - (ll t){
return Complex(x-t,y);
}
bool operator % (Complex t){
ll t1=(x*t.x+y*t.y)%t.mode2();
ll t2=(y*t.x-x*t.y)%t.mode2();
return t1||t2;
}
Complex operator / (Complex t){
return Complex((x*t.x+y*t.y)/t.mode2(),(y*t.x-x*t.y)/t.mode2());
}
}s,k;
ll UP;
ll flag;
ll ans[N],ansd; void dfs(Complex now,ll step)
{
if(flag) return;
if(step>) return;
if(!now.mode2())
{
flag=;
ansd=step;
return;
}
for(ll i=;i*i<UP && !flag;i++)
{
Complex tmp=now-i;
if(tmp%k==)
{
ans[step]=i;
dfs(tmp/k,step+);
}
}
}
int main()
{
ll T;
scanf("%lld",&T);
while(T--)
{
flag=;
scanf("%lld%lld%lld%lld",&s.x,&s.y,&k.x,&k.y);
UP=k.mode2();
dfs(s,);
if(!flag)
printf("The code cannot be decrypted.\n");
else
{
if(!ansd) printf(""); //一开始就为0
for(ll i=ansd-;i>=;i--)
{
if(i!=ansd-) printf(",");
printf("%lld",ans[i]);
}
printf("\n");
}
}
return ;
}

[swustoj 679] Secret Code的更多相关文章

  1. Android Secret Code

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

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

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

  3. Android 编程下的 Secret Code

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

  4. The secret code

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

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

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

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

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

  7. Secret Code

    Secret Code 一.题目 [NOIP模拟赛A10]Secret Code 时间限制: 1 Sec  内存限制: 128 MB 提交: 10  解决: 6 [提交][状态][讨论版] 题目描述 ...

  8. 【微信】根据appid, secret, code获取用户基本信息

    function getUserInfo(){ $appid = "yourappid"; $secret = "yoursecret"; $code = $_ ...

  9. 洛谷P3102 [USACO14FEB]秘密代码Secret Code

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

随机推荐

  1. VLAN和Trunk

    Vlan实验题: 如图所示 解答过程 (一)相同vlan之间的设备全连通 1. 在SW1和SW2上分别创建vlan2和vlan3, 命令如下 SW1# vlan database SW1(vlan)# ...

  2. Spark Streaming揭秘 Day9 从Receiver的设计到Spark框架的扩展

    Spark Streaming揭秘 Day9 从Receiver的设计到Spark框架的扩展 Receiver是SparkStreaming的输入数据来源,从对Receiver整个生命周期的设计,我们 ...

  3. psutil--跨平台的进程管理

    原文地址:http://www.jianshu.com/p/64e265f663f6 Python处理Windows进程 psutil(Python system and process utilit ...

  4. 一个有意思的js实例,你会吗??[原创]

    首先,看看下面一个js例子,你觉得会输出什么呢? function fn(a){ a(); function a(){ console.log(2); } var a = function(){ co ...

  5. DB天气app冲刺第十二天

    今天其实不算冲刺了 ,因为今天没怎么花时间在软件上,而是花时间在老师留的作业上了.所以也算作是软件工程这门课的冲刺吧. DB天气这款app上今天的api接口还是木有弄好.明天会继续弄.但是全国城市的数 ...

  6. bnu 4351 美女来找茬(水水)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=4351 [题意]:用最小的矩形框,框住像素点差超过5的点. [题解]:求坐标x,y最大最小值 [cod ...

  7. Cookie Session Cache

    二. 工作机制 Ø Cookie :采用的是客户端保存信息的方案. Ø Session :采用服务器端保存信息的方案. Ø Cache :利用缓存 SRAM 来"静态"的保存写入信 ...

  8. maven插件mybatis-generator生成代码配置

    鸣谢:http://my.oschina.net/u/1763011/blog/324106?fromerr=nJakGh4P (也可参看此博客进行配置) http://www.cnblogs.com ...

  9. 【数学】[BZOJ 3884] 上帝与集合的正确用法

    Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元” ...

  10. VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因

    VS 2005使用map文件查找程序崩溃原因 一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一个比较好的 ...