1. 程式人生 > >回文數的定義以及拓展使用

回文數的定義以及拓展使用

class bsp code name nbsp 是否 col include ace

回文數

定義:正讀反讀一樣的數,從左向右讀與從右向左讀是完全一樣的自然數。例如:91,11,202,1001等,1011就不是。

題目1:輸入兩個數l,r,輸出x。其中x滿足在[l,r]範圍內回文數的個數。

 1 #include <iostream>
 2 #include<stdio.h>
 3 #include<math.h>
 4 
 5 using namespace std;
 6 int huiwen(int num)
 7 {
 8     int o = num;  //o存儲正序
 9     int tmp = 0;
10     while(num != 0
) //tmp存儲逆序 11 { 12 tmp *= 10; 13 tmp += num % 10; 14 num /= 10; 15 } 16 if (tmp == o) //回文數正序逆序是否相當來判斷 17 //if(tmp%10 == o%10) //取正序逆序的個位數判斷 18 { 19 return 1; 20 } 21 return 0; 22 } 23 24 int main() 25 { 26 int l,r; 27 scanf("%d %d",&l,&r);
28 int count=0; 29 for(int i=l;i<=r;i++) 30 { 31 if(huiwen(i)==1) count++; 32 } 33 cout<<count<<endl; 34 return 0; 35 }

拓展:定義一個特殊的回文數,只要求首部與尾部相等即可。例:8,11,202,1001,1011等

題目2:輸入兩個數l,r,輸出x。其中x滿足在[l,r]範圍內回文數的個數。

 1 #include <iostream>
 2 #include<stdio.h>
 3
#include<math.h> 4 5 using namespace std; 6 int huiwen(int num) 7 { 8 int o = num; //o存儲正序 9 int tmp = 0; 10 while(num != 0) //tmp存儲逆序 11 { 12 tmp *= 10; 13 tmp += num % 10; 14 num /= 10; 15 } 16 //if (tmp == o) //回文數正序逆序是否相當來判斷 17 if(tmp%10 == o%10) //取正序逆序的個位數判斷 18 { 19 return 1; 20 } 21 return 0; 22 } 23 24 int main() 25 { 26 int l,r; 27 scanf("%d %d",&l,&r); 28 int count=0; 29 for(int i=l;i<=r;i++) 30 { 31 if(huiwen(i)==1) count++; 32 } 33 cout<<count<<endl; 34 return 0; 35 }

回文數的定義以及拓展使用