40平米牙科诊所装修图:自动对款机 要求完整的源程序和解题思路

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 20:29:08
问题描述
Byteland上的每位居民都有一个自己的银行帐号,帐号上记录了居民的存款金额,以硬币为单位。他们可以用自己的帐号在100台自动对款机上进行取款或付款的操作。
这100台自动对款机的编号从0到99。每台都有自己的运行特点。当你在编号为i的机器上进行操作时,若i是偶数,你将从对款机中获得2^i个硬币;若i是奇数,你将付给机器2^i个硬币。
假设你要从银行取14枚硬币,那么你可以在第4号机上操作,获得16枚硬币,接着在第一号对款机上操作,付回2枚硬币,最终得到14枚硬币。
假设你要付银行7枚硬币,那么你可以在第3号机上操作,付出8枚硬币,接着在第0号对款机上操作,取回1枚硬币,最终付出7枚硬币。
注意,每台机只能操作一次。
现在,L先生将要向银行支取或交纳一定的硬币。你能设计一个方案,完成L先生的要求。

输入:
第一行是一个数N(1<=N<=1000),表示测试数据的个数。
以下N行,第i+1行是一个整数P[i],不超过10^30,表示L先生将要向银行支取或交纳一定的硬币的数额。
输出:
共2N行,每两行对应一个测试数据的答案。
第i*2-1行表示L先生从银行支取p[i]个硬币的方案;第i*2行表示L先生向银行交纳p[i]个硬币的方案。
如果一个方案不存在,在该行输出NIE。

样例:
输入
2
7
633825300114114700748351602698
输出
4 3 1 0
3 0
NIE
99 3 1
要求[[完整]]源程序!!!!!!!!!

kai jiao cai和相对应的钱除取整( 为当前面额的张数)

由原来的-张数*面额=剩余的

将剩余的再去做下一个面额的除法。

最后得到为0即可。

所得的除运算的结果为当前面额的张数
这是负二进制的模型!
具体原程序可能要些时间再给,这题以前做过。
但没有高精度。
10^30得用高精度了

最简单的方法是。

和相对应的钱除取整( 为当前面额的张数)

由原来的-张数*面额=剩余的

将剩余的再去做下一个面额的除法。

最后得到为0即可。

所得的除运算的结果为当前面额的张数

这是负二进制的模型!
具体原程序可能要些时间再给,这题以前做过。
但没有高精度。
10^30得用高精度了。