出场题目一:P1217 [USACO1.5]回文质数 Prime Palindromes
1. cin和cout
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| int main() { int a;
cin>>a; scanf("%d",&a); cout<<a<<endl; printf("%d\n",a);
return 0; }
|
2.布尔型
3.定义函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| bool isPal(int x) { int xx=x,y=0; while(xx>0) { int x1=xx%10; y=y*10+x1; xx=xx/10; } return x==y; }
bool isPrime(int x) {
for(int i=2;i<=sqrt(x);i++) if(x%i==0) return false;
return true; }
|
4.求一个数的位数
1 2 3 4 5 6 7 8 9 10 11
| int GetDigit(int x) { int n=0; while(x>0) { n++; x=x/10; } return n; }
|
5.素数筛
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
bool isPrime(int x, int Prime[], int nP) { for(int i=0; i<nP; i++) if(x%Prime[i]==0) return false; return true; }
int main() { int f[N]={0}; for(int i=2; i<N/2; i++) { if(f[i]==1) continue; for(int k=2; i*k<N ;k++) f[i*k]=1; } int Prime[1230],nP=0; for(i=2; i<N; i++) if(f[i]==0) { Prime[nP]=i; nP++; } return 0; }
|
*6.生成回文数的一种方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
for(x1=1; x1<=9; x1++) for(int x2=0; x2<=9; x2++) for(int x3=0; x3<=9; x3++) for(int x4=0; x4<=9; x4++) { int x=x1*1000+x2*100+x3*10+x4*1; int y=x3*100+x2*10+x1*1; x=x*1000+y; if(x<a) continue; if(x>b) return 0; if(isPrime(x, Prime, nP)==true) cout<<x<<endl; }
|
出场题目二:P2615 [NOIP2015 提高组] 神奇的幻方
1.使得代码简洁的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #define N 40 void Output(int a[N][N],int n) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) cout<<a[i][j]<<' '; cout<<endl; } }
int main() { int a[N][N]={0}; Output(a,n); }
|
2.怎么做模拟题
模拟,意为“它怎么说,你怎么做”。照着题干描述实现程序即可。