Decimal integer conversion

原创 2018年04月15日 10:23:29
描述
XiaoMing likes mathematics, and he is just learning how to convert numbers between differentbases , but he keeps making errors since he is only 6 years old. Whenever XiaoMing converts anumber to a new base and writes down the result, he always writes one of the digits wrong.For example , if he converts the number 14 into binary (i.e., base 2), the correct result should be"1110", but he might instead write down "0110" or "1111". XiaoMing never accidentally adds ordeletes digits, so he might write down a number with a leading digit of " 0" if this is the digit shegets wrong.Given XiaoMing 's output when converting a number N into base 2 and base 3, please determinethe correct original value of N (in base 10). (N<=10^10)You can assume N is at most 1 billion, and that there is a unique solution for N. 
输入
The first line of the input contains one integers T, which is the nember of test cases (1<=T<=8)
Each test case specifies:
* Line 1: The base-2 representation of N , with one digit written incorrectly.
* Line 2: The base-3 representation of N , with one digit written incorrectly.
输出
For each test case generate a single line containing a single integer , the correct value of N
样例输入
1
1010
212
样例输出
14
来源

河南省第九届省赛

题目意思是:给你t组测试数据,每组数据,有两行,第一行是二进制,第二行是三进制。并且它们俩表示的十进制数字是同一个。

但是,每行都有一位数字是错误的,现在让你求出来原来的十进制数字。


      根据stl容器set的唯一性这一特性做这个题。

      在nyoj上排19,美滋滋,继续努力。


#include<stdio.h>
#include<string.h>
#include<string>
#include<iostream>
#include<set>
using namespace std;
struct node
{
    long long ans;
    node(long long A)
    {
        ans=A;
    }
};
bool operator<(node a,node b)
{
    if(a.ans<b.ans)
        return true;
    else
        return false;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        set<node>s;
        long long ans1=0,j=1,ans2=0;
        string test1,test2;
        cin>>test1;
        cin>>test2;
        if(test1[0]=='0')
        {
            for(int i=test1.size()-1;i>0;i--)
            {
                ans1+=(test1[i]-'0')*j;
                j*=2;
            }
        }
        else
        {
            for(int i=test1.size()-1;i>=0;i--)
            {
                ans1+=(test1[i]-'0')*j;
                j*=2;
            }
            j=1;
            for(int i=test1.size()-1;i>=0;i--)
            {
                if(test1[i]=='0')
                {
                    s.insert(node(ans1+j));
                }
                else
                {
                    s.insert(node(ans1-j));
                }
                j*=2;
            }
            j=1;
            for(int i=test2.size()-1;i>=0;i--)
            {
                ans2+=(test2[i]-'0')*j;
                j*=3;
            }
            j=1;
            for(int i=test2.size()-1;i>=0;i--)
            {
                unsigned int tmp=s.size();
                if(test2[i]=='0')
                {
                    s.insert(node(ans2+j));
                    if(s.size()==tmp)
                    {
                        cout<<ans2+j<<endl;
                        break;
                    }
                    tmp++;
                    s.insert(node(ans2+2*j));
                    if(s.size()==tmp)
                    {
                        cout<<ans2+2*j<<endl;
                        break;
                    }
                }
                if(test2[i]=='1')
                {
                    s.insert(node(ans2-j));
                    if(s.size()==tmp)
                    {
                        cout<<ans2-j<<endl;
                        break;
                    }
                    tmp++;
                    s.insert(node(ans2+j));
                    if(s.size()==tmp)
                    {
                        cout<<ans2+j<<endl;
                        break;
                    }
                }
                if(test2[i]=='2')
                {
                    s.insert(node(ans2-j));
                    if(s.size()==tmp)
                    {
                        cout<<ans2-j<<endl;
                        break;
                    }
                    tmp++;
                    s.insert(node(ans2-2*j));
                    if(s.size()==tmp)
                    {
                        cout<<ans2-2*j<<endl;
                        break;
                    }
                }
                j*=3;
            }
        }
    }
    return 0;
}

NYOJ_1277_Decimal integer conversion

/* Decimal integer conversion 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述     XiaoMing likes mathematics...
  • huangshuai147
  • huangshuai147
  • 2016-06-18 14:00:27
  • 310

进制转换(Hex Conversion)

      个人第一篇博客,很早就有写博客的想法,今天才实施,拖延症晚期,得改!!先说下题目,刚看到这个题目很懵逼,英语不好,看不懂(汗颜),借助有道才知道题目干啥得。好了,进入正题。进制转换就不做过...
  • Wenbooboo
  • Wenbooboo
  • 2018-04-12 10:24:16
  • 68

F Decimal integer conversion

Decimal integer conversion 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述XiaoMing likes mathema...
  • xunalove
  • xunalove
  • 2017-04-18 14:50:42
  • 191

(LintCode) No 1: Hex Conversion

题目描述:如标题代码如下:没什么好说的class Solution { public: /** * @param n: a decimal number * @param ...
  • Amber_tq
  • Amber_tq
  • 2018-03-04 17:14:57
  • 356

iOS implicit conversion loses integer precision 'unsigned long' to int

implicit conversion loses integer precision 'unsigned long' to int
  • wengyupeng
  • wengyupeng
  • 2015-03-07 20:20:38
  • 6930

incompatible integer to pointer conversion assigning to

incompatible integer to pointer conversion assigning to的时候,把nsinteger前面的*去掉即可...
  • darongzi1314
  • darongzi1314
  • 2015-01-14 10:40:41
  • 1030

Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32警告去掉

3.关闭某一个指定文件的某种指定类型的警告 这里,拿一个具体工程来说吧.比如我们工程里有一个文件  PresencePacket 其实关闭某个指定文件的某种类型的警告很简单,就如同...
  • qq_33225287
  • qq_33225287
  • 2016-06-17 11:17:38
  • 1014

nyoj 1277 Decimal integer conversion

XiaoMing likes mathematics, and he is just learning how to convert numbers between different bases ,...
  • qqchanmingdexiaji
  • qqchanmingdexiaji
  • 2017-04-06 15:59:14
  • 71

Xcode工程 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32类似的警

-fno-objc-arc -Wno-shorten-64-to-32 在xcode 项目中出现了类似的报错, 在项目中需要兼容MRC,解决方案就是直接在工程配置中...
  • qq_26992079
  • qq_26992079
  • 2016-07-22 16:08:09
  • 497

警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32

处理方法: 1.工程的target有一个 Other Warning Flags ,在其中添加 -Wno-shorten-64-to-32, 然后新编译,你会发现整个文件中的  Implicit c...
  • u012976984
  • u012976984
  • 2015-09-01 14:26:56
  • 371
收藏助手
不良信息举报
您举报文章:Decimal integer conversion
举报原因:
原因补充:

(最多只允许输入30个字)