10 条题解
-
5
我就看谁敢抄
b = int(input()) a = [11,101,131,151,181,191,313,353,373,383,727,757,787,797,919,929,10301,10501,10601,11311,11411,12421,12721,12821,13331,13831,13931,14341,14741,15451,15551,16061,16361,16561,16661,17471,17971,18181,18481,19391,19891,19991,30103,30203,30403,30703,30803,31013,31513,32323,32423,33533,34543,34843,35053,35153,35353,35753,36263,36563,37273,37573,38083,38183,38783,39293,70207,70507,70607,71317,71917,72227,72727,73037,73237,73637,74047,74747,75557,76367,76667,77377,77477,77977,78487,78787,78887,79397,79697,79997,90709,91019,93139,93239,93739,94049,94349,94649,94849,94949,95959,96269,96469,96769,97379,97579,97879,98389,98689] for i in a: if i < b: print(i)
-
2
C++ :
#include <iostream> #include <cstdio> #include <cmath> #define Maxn 1009 using namespace std; int dat[Maxn],len0=0,n; bool isPrim(int m); int main() { scanf("%d",&n); dat[len0]=11; for(int i1=1; i1<=9; i1=i1+2){ for(int i2=0; i2<=9; i2++){ int m=i1*101+i2*10; if(isPrim(m)){ dat[++len0]=m; } } } for(int i1=1; i1<=9; i1=i1+2){ for(int i2=0; i2<=9; i2++){ int m=i1*1001+i2*110; if(isPrim(m)){ dat[++len0]=m; } } } for(int i=0; i<=len0; i++){ if(dat[i]<=n){ printf("%d\n",dat[i]); }else{ break; } } return 0; } bool isPrim(int m) { bool flag=true; int k=sqrt(m)+0.05; for(int i=2; i<=k; i++){ if(m%i==0){ flag=false; break; } } return flag; }
-
1
本人不是很喜欢数学方法判断回文数,而是喜欢字符串的翻转(包括在C++中),尽管字符串的操作需要较高的时间复杂度
def is_prime(n): for i in range(2,int(n**0.5)+1): if n%i == 0: return False return True def is_huiwen(n): s = str(n) if s == s[::-1]: return True else: return False n = int(input()) for i in range(10,n+1): if is_huiwen(i) and is_prime(i): print(i)
-
1
#include<bits/stdc++.h> using namespace std; bool isPalindrome(int x) { long revertedNumber = 0; long t = x; if(x < 0 || (x % 10 == 0 && x != 0)) return false;//排除小于0与末尾为0的情况 while(t) { revertedNumber=10*revertedNumber+ (t % 10); t /= 10; }//将数倒转(把这个理解了基本上就做出来了) return x == revertedNumber;//比较是否相同 }//回文数判断 int main() { int n; cin>>n; int a[100001]={0}; for(int i=2;i<=n;i++) { a[i]=i; } for(int i=2;i<=n;i++) { for(int j=2;j<=sqrt(i);j++) { if(i%j==0) { a[i]=0; break; } } if(a[i]!=0)//质数判断 { if(isPalindrome(a[i])&&a[i]>10)cout<<a[i]<<endl; }//回文数均大于10 } }
- 1
信息
- ID
- 122
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 1685
- 已通过
- 439
- 上传者