• 折腾笔记-计蒜客T1167AC记


    查看原题

    原题地址

    思路:

    判断回文+判断质数

    初步代码:

    #include <bits/stdc++.h>
    using namespace std;
    bool prime(int n) {
        for(int i = 2;i<sqrt(n);++i) {
            if(n%i==0) {
                return 0;
            }
        }
        return 1;
    }
    bool huiwen(long long n) {
        string a = " ";
        string b = " ";
        stringstream ss;
        ss<<n;
        ss>>a;
        int k = 0;
        for(int i = a.length()-1;i>=0;--i) {
            //cout<<a[i]<<"#";
            b[k] = a[i];
            k+=1;
        }
        b[k+2] = '';
        for(int i = 0;i<=a.length();++i) {
           // cout<<a[i]<<" "<<b[i]<<endl;
            if(a[i]!=b[i]) {
                //cout<<a[i]<<" "<<b[i];
                return false;
            }
        }
        return true;
    }
    int main() {
        const int m = 11;
        long long n;
        cin>>n;
        int ans = 0;
        for(int i = m;i<=n;++i) {
            if(prime(i)&&huiwen(i)) {
                ans++;
            }
        }
        cout<<ans<<endl;
    }

    分数:

    $color{red} ext{未通过 color{black}{80分}}$

    $color{blue} ext{原因: color{red}{答案错误}}$


    经确认,由于"bool prime(long long n) {"中

    for(int i = 2;i<sqrt(n);++i) {
            if(n%i==0) {
                return 0;
            }
        }
        return 1;

    部分的i<sqrt(n)忽略了sqrt(n)是质数的情况,比如,sqrt(25)等于5,所以25不是质数,上面忽略了此情况。


    修改如下:

    $color{blue} ext{修改后分数: color{green}{100}}$

    $color{blue} ext{结果: color{green}{正确通过}}$

    修改代码:

    #include <bits/stdc++.h>
    using namespace std;
    bool prime(long long n) {
        for(int i = 2;i<=sqrt(n);++i) {
            if(n%i==0) {
                return 0;
            }
        }
        return 1;
    }
    bool huiwen(long long n) {
        string a = " ";
        string b = " ";
        stringstream ss;
        ss<<n;
        ss>>a;
        int k = 0;
        for(int i = a.length()-1;i>=0;--i) {
            b[k] = a[i];
            k+=1;
        }
        b[k+1] = '';
        for(int i = 0;i<=a.length();++i) {
            if(a[i]!=b[i]) {
                return false;
            }
        }
        return true;
    }
    int main() {
        const int m = 11;
        long long n;
        cin>>n;
        long long ans = 0;
        for(int i = m;i<=n;++i) {
            if(prime(i)&&huiwen(i)) {
                ans++;
            }
        }
        cout<<ans<<endl;
    }
  • 相关阅读:
    程序=算法+数据结构 的理解
    为什么有些语言可以被反编译?而有的不能?
    手机怎么访问电脑服务器上的网页
    linux一键安装
    Linux初学者必知的5个学习网站
    忘记阿里云管理终端密码怎么办
    Linux学习(CentOS-7)---磁盘分区(概念、分区方法、分区方案)
    远程桌面怎样复制本地文件听语音
    如何查看某个端口被谁占用
    cmd命令
  • 原文地址:https://www.cnblogs.com/littlefrog/p/11939507.html
Copyright © 2020-2023  润新知