• 折腾笔记-计蒜客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;
    }
  • 相关阅读:
    IList扩展
    WPF 路由事件
    WPF 属性值绑定、转换
    WPF 生命周期
    App.config 动态编辑
    Oracle Package的全局变量与Session
    AES对数据进行加密与解密
    OracleAES加密
    AES加解密程序的实现
    Oracle的AES加密与解密用法
  • 原文地址:https://www.cnblogs.com/littlefrog/p/11939507.html
Copyright © 2020-2023  润新知