zzhhyy1234 @ 2024-07-26 19:26:12
RT
有点奇怪
#include<bits/stdc++.h>
using namespace std;
int n,m; bool isprime(int x) { for(int i=2;ii<=x;i++) if(x%i==0) return 0; return 1; } int zhuan(int x) { int z=0; while(x) { z=10; z+=x%10; x/=10; } return z; } bool hw(int x) { if(x==zhuan(x)) return 1; else return 0; } int main() { cin>>n>>m; for(int i=n;i<=m;i++) if(hw(i)) if(isprime(i)) cout<<i<<endl; return 0; }
[记录](https://www.luogu.com.cn/record/168752033)
------------
- **(之前交的)** **66分代码**:
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m;
bool isprime(int x)
{
for(int i=2;i*i<=x;i++) if(x%i==0) return 0;
return 1;
}
int zhuan(int x)
{
int z=0;
while(x)
{
z*=10;
z+=x%10;
x/=10;
}
return z;
}
bool hw(int x)
{
if(x==zhuan(x)) return 1;
else return 0;
}
int main()
{
cin>>n>>m;
for(int i=n;i<=m;i++) if(isprime(i)) if(hw(i)) cout<<i<<endl;
return 0;
}
记录
if(hw(i))
和
if(isprime(i))
调换了位置 (大雾
话说我的思路正常吗
by zzhhyy1234 @ 2024-07-26 19:29:58
加了个
if(i%2)
在
if(hw(i))
前面
已AC,此帖结 [doge]
by xuqihang_ @ 2024-07-26 21:02:59
@zzhhyy1234
#include<bits/stdc++.h>
using namespace std;
int l, r;
bool check1(int x)//检查位数
{
if((1000 <= x && x <= 9999) || (100000 <= x && x <= 999999)) return 0;//不知道&&和||优先级的可以打个括号
return 1;
}
bool check2(int x)//检查是否回文
{
int a[20], flag = 1;//反正开得下,多开点
while (x > 0)
{
a[flag] = x % 10;
x /= 10;
flag++;
}
for (int i = 1; i <= flag / 2; i++)
if(a[i] != a[flag-i]) return 0;//不符合回文
return 1;
}
bool check3(int x)//检查是否为质数
{
if(x == 2) return 1;
for(int i = 2; i <= sqrt(x); i++)
if(x % i == 0) return 0;
return 1;
}
int main()
{
scanf("%d %d", &l, &r);
if(l == 2) printf("2\n");//一定要注意2!!!
if(l % 2 == 0) l++;
r = min(9999999, r);//再大的数都不可能是回文质数
for(int i = l; i <= r; i = i + 2)//枚举每一个奇数
{
if(check1(i) == 0) continue;
if(check2(i) == 0) continue;
if(check3(i) == 0) continue;
printf("%d\n", i);//printf会比cout快很多
}
return 0;
}
by zzhhyy1234 @ 2024-07-27 14:19:51
@xuqihang_ 谢了啊,已关