问题标题: 酷町堂:6601 寻找数字游戏

0
1
已解决
万韧山
万韧山
初级天翼
初级天翼
#include<bits/stdc++.h>
using namespace std;
bool t[100000005];
bool hw(int n){
    int a[100],cnt=0;
    while(n!=0){
        a[++cnt]=n%10;
        n/=10;
    }
    int i=1;
    while(i<=cnt){
        if(a[i]!=a[cnt]) return 0;
        i++;
        cnt--;
    }
    return 1;
}
int main(){
//取个位 %10
//取十位 /10
//取百位 /100%10
//取千位 /1000%10
    //freopen("题目英文名.in","r",stdin);
    //freopen("题目英文名.out","w",stdout);
    int a,b;
    cin>>a>>b;
    t[1]=1;
    for(int i=a;i<=b;i++){
        if(!t[i]){
            for(int j=i*2;j<=b;j+=i){
                t[j]=1;
            }
        }
    }
    for(int i=a;i<=b;i++){
        if(!t[i]&&hw(i)) cout<<i<<endl;
    }
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

TLE0分


0
0
0
0
宋子墨
宋子墨
新手天翼
新手天翼

首先

回文函数就有问题(仅个人觉得)

这样改

建议把上面定义的bool类型数组删除

bool hw(int n)   这一行是不用改的

{

定义int 变量 t,s=n;

while循环,条件是n

    循环里写

    {

        t=t*10+n%10;

        n/=10;

    }

    return t==s;

}

再来个判断质数的函数,应该都学过

定义long long类型变量a和b

输入a和b   cin就行

for循环(long long i=a;i<=b;i++)

循环条件{

如果i<=10000000并且i是回文数并且i是质数

输出i和换行

}

0
0
0
0
郝天尘
郝天尘
资深光能
资深光能

@万韧山 

你这个回文可以这样写

函数 定义n

定义t是0, 定义 s等于 n;
    循环(定义的n) {
        t等于t乘10加定义的n模10;
        定义的n除等于10
    }
    返回t等于s

主函数

定义long long类型变量a和b

输入a和b   cin就行

for循环longlong一个i,i=a,i小于等于b

判断条件{

如果i<=10000000并且i是回文数并且i是质数

输出i和换行

0
宋子墨
宋子墨
新手天翼
新手天翼

bool isprime(long long n){//质数

如果n<=1

直接return 0;

for循环2到sqrt(n)

{

如果n%i==0

直接return 0;

}

return 1;

}

0
宋子墨
宋子墨
新手天翼
新手天翼

循环a到n的for循环中的i要定义为long long

输出条件是i小于等于10000000注意是一千万一定要先写这个再写是不是回文数和是不是质数!

0
宋子墨
宋子墨
新手天翼
新手天翼

话说那个bool t[10000005]删了吧

0
0
宋子墨
宋子墨
新手天翼
新手天翼

已经过了一个小时了,我都想给你寄刀片了。。。

0
0
0
我要回答