题目1
【问题描述】
同构数是其平方数的尾数等于该数自身的自然数,例如:25*25=625。从键盘输入一个不大于10000的自然数,判断其是否是同构数并按样例格式输出。
【输入形式】
从键盘输入一个不大于10000的自然数。
【输出形式】
输出格式按样例。
【样例输入1】
25
【样例输出1】
25 yes,25*25=625
【样例输入2】
11
【样例输出2】
11 no,11*11=121
【代码】
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
| #include <iostream> using namespace std; int main() { int a; cin>>a; int b=a*a-a; int c=a,d=b; while((c=c/10)!=0) { if(d%10!=0) { cout<<a<<" no,"<<a<<"*"<<a<<"="<<a*a; return 0; } d=d/10; } if(d%10!=0) cout<<a<<" no,"<<a<<"*"<<a<<"="<<a*a; else cout<<a<<" yes,"<<a<<"*"<<a<<"="<<a*a; return 0; }
|
题目2
【问题描述】
绝对素数是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。
编写一个程序,求出所有m~n(m≥11,n≤1000000)之间的绝对素数
【输入形式】
两个整数m和n。
【输出形式】
m~n之间的绝对素数,每个数之间用空格隔开,每行输出10个
【样例输入】
11 300
【样例输出】
11 13 17 31 37 71 73 79 97 101
107 113 131 149 151 157 167 179 181 191
199
【代码】
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 38 39
| #include<iostream> #include <stdio.h> using namespace std; int prime(int m){ for (int i = 2; i < m-1; i++) { if (m%i==0) return 0; } return 1; }
int inv(int n){ int m=0; while(n>0){ m=m*10+n%10; n/=10; } return m; }
int main(){ int m,n,j=0; cin>>m>>n; for (int i = m; i < n; i++) {
if(prime(inv(i))==1&&prime(i)==1){ cout<<i<<" "; j++; if(j==10){ putchar('\n'); j=0; } } } return 0; }
|
代码可能略有不足,请大佬多多指教