蒟蒻求助,感觉是循环内错误
查看原帖
蒟蒻求助,感觉是循环内错误
925109
Hongfr楼主2024/1/28 22:07

问题:没有输出 题目:P1555 尴尬的数字

重点看一下循环

#include<bits/stdc++.h>
using namespace std;
string asc1,asc2,terna="";
long long len1,len2;
int deb,diff;
void DCon10()
{
    for(int i=len1;i>=0;i--)
        deb=(asc1[i]-'0')*pow(2,len1-i);
    return ;
}
void DCon3()
{
    int num=deb;//因为deb要保留到输出
    while (num)
    {
        terna=char(num%3+'0')+terna;
        num/=3;
    }
    return ;
}
int main()
{
    cin>>asc1>>asc2;
    len1=asc1.size()-1;
    len2=asc2.size()-1;
    for (int i=0;i<=len1;i++)
    {
        //1.变asc1的数
        if (asc1[i]=='1')   asc1[i]='0';
        else                asc1[i]='1';
        //2.2转10  用deb储存10进制 int类型
        DCon10();
        //3.10转3  用tarna储存3进制  string类型
        DCon3(); 
        //判断是否只错了一个数  用diff来统计差的数
        for (int j=0;j<=len2;j++)
        {
            if (terna[j]!=asc2[j])
                diff++;
        }
        //是.输出10进制的数
        if (diff==1)
        {
            cout<<deb;
            return 0;
        }
        //否.将asc1的数变回来
        else
        {
            if (asc1[i]=='1')   asc1[i]='0';
            else                asc1[i]='1';
        }
    }
}
2024/1/28 22:07
加载中...