第三题70,暴力搜索 /* 时间限制:C/C++语言 2000MS;其他语言 4000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 回文串是无论正着读还是反着读都一样的字符串,比如“level”或者“noon”就是回文串。 若将某个十进制非负整数N,转换成二进制后得到的 01 序列具有回文串的性质,则称该数为回文数,比如十进制非负整数 9 表示成二进制后得到 1001,“1001”具有回文串的性质,则称十进制整数 9 为回文数。 现给你一个十进制整数N,请计算小于等于N的回文数的数量。 输入 第一行包含一个整数N, 1 ≤N≤1018。 输出 输出一个整数M,表示小于等于 N 的回文数的数量 样例输入 6 样例输出 4 提示 Input Sample 10 Output Sample 6 */ #include<iostream> #include <vector> using namespace std; typedef long long LL; int isHuiWen(LL n) {     vector<LL> temp;     while (n)     {         if (n%2==0)         {             temp.push_back(0);             n /= 2;         }         if (n%2==1)         {             temp.push_back(1);             n /= 2;         }     }     int len = temp.size();     if (len==1)     {         return 1;     }     int i = 0;     int j = len - 1;     while (i<j)     {         if (temp[i]==temp[j])         {             i++;             j--;         }         else         {             return -1;         }     }     return 1; } int main() {     LL n;     cin >> n;     int cnt = 0;     for (LL i = 0; i <= n; i++)     {         if (isHuiWen(i)==1)         {             cnt++;         }     }     cout << cnt << endl;     return (0); }
点赞 评论

相关推荐

饼子吃到撑:海面这个是,投了一般都给的
点赞 评论 收藏
分享
牛客网
牛客企业服务