问题标题: 酷町堂:2758

0
0
已解决
屈子元
屈子元
初级守护
初级守护

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s,s1="";
    int pos=0;
    cin>>s;
    for(int i=s.size()-1;i>=0;i--)
    {
        pos+=(s[i]-'0')*pow(2,s.size()-i-1);
    }
    while(pos)
    {
        s1=(char)(pos%2+'0')+s1;
        pos/=2;
    }
    for(int i=0;i<s1.size()/2;i++)
    {
        if(s1[i]!=s1[s1.size()-i-1])
        {
            cout<<"no";
            return 0;
        }
    }
    cout<<"yes";
    return 0;
}

90分?


0
已采纳
叶子煊
叶子煊
中级光能
中级光能

题目说输入整数在int之内,你实在不放心可以开long long啊

所以你不需要定义输出字符串再转整形,太麻烦,并且有时候会有因素你考虑不到

多以直接定义输入整形即可(AC)

~~~~~~~~~~~~~~~~~~~~~~~~~

望采纳~~~

叶子煊在2019-07-18 00:41:29追加了内容
    for(int i=s.size()-1;i>=0;i--)
    {
        pos+=(s[i]-'0')*pow(2,s.size()-i-1);
    }

改为(所以说你代码能力不够)

    for(int i=s.size()-1;i>=0;i--)
    {
        pos+=(s[i]-'0')*pow(10,s.size()-i-1);
    }

即可

0
我要回答