纪中集训2020.01.14【NOIP普及组】模拟赛C组总结—————— 数制转换

纪中集训2020.01.14【NOIP普及组】模拟赛C组总结—————— 数制转换

1.数制转换
这题我居然拿了(10 0分), 高分党,我才发现我真会投资。 ~~~~直接花了1个小时还多!!!
但,还是一头雾水!【提高组】B组巨佬,只花了20分钟AC了!!!

膜拜巨佬

———————华丽的分割线———————

言归正传

1.数制转换

**题目大意:**有一种数制的基数是3,权值可以取-1,0,1,并分别用符号-,0,1表示,如这种数制的101表示十进制数的10,即1乘9+0乘3+1乘1=10,又如这种数制的-0表示十进制数的-3,即-1乘3+0乘1=-3。编程把给定的有符号整数转换为新数制的数,该数的前头不能有多余的0,如10的新数制表示是101,则不要输出成0101。
Input
  有一行或多行,每行有一个整数N(-2147483647<=N<=2147483647),整数内不会有其他分隔符,整数前后可能有空格。
Output
  对输入文件的每一行输出一行,该行是输入行的整数的新数制表示,结果不能有前导空格。
Sample Input
10
-3
Sample Output
101
-0

WHAT!!!WT!!! 蒟蒻(我)看不懂呀!巨佬大致的讲了一下然后,就过了!

这只是到送分的水题,不用花太多的功夫。不就转个三进制吗!

分析一下:(猜进制+转进制+判符号=此题AC)从101变到10,1乘9+0乘3+1*1=10,就是乘3^(n-1),就知道的转三进制。然后分正负数,所以就判断个正负号,即可!

附上Pascal AC 代码:

var
        n,i,j,x,y,p,t,bj,w,l:longint;
        s,ans:ansistring;
        a:array[0..1000005] of longint;
begin
        readln(s);
        while (s<>'') do
        begin
                for i:=1 to 500 do
                        a[i]:=0;
                i:=1;
                while s[i]=' ' do
                        inc(i);
                delete(s,1,i-1);
                i:=length(s);
                while s[i]=' ' do
                        dec(i);
                inc(i);
                delete(s,i,length(s)-i+1);
                x:=0;
                p:=1;
                if s[1
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值