|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2007-08-24, 11:06 PM | #1 |
註冊會員
|
程式 - 好題目跟好朋友分享
題目:
輸入一個數字B,以B為進位數(ex:B=2,以2進位),2<=B<=20 接著在1<=N<=300的情況下,以B為進位數的N平方數M若為對稱數 則以B為進位的方式輸出N及M EX:B=2,N=3,N平方=9=1001(以2為底),則1001為一對稱數 B=2,N=4,N平方=16=10000(以2為底),則10000為一不對稱數 忘了提醒~ 若是數字進位後超過10,以英文表示,ex:30(B=16)=1E 範例輸入: 10 範例輸出: 1 1 2 4 3 9 11 121 22 484 26 676 101 10201 111 12321 121 14641 202 40804 212 44944 264 69696 題目來源 +U!! 10/1 給解答測試~ 此帖於 2007-08-27 12:16 AM 被 joebin 編輯. |
送花文章: 15,
|
2007-08-26, 03:31 PM | #3 (permalink) |
註冊會員
|
用C寫了一個
語法:
#include<stdio.h> #define snum_MAX 17 void translate(int N, long decimal_num, char *result_num, int *result_digit); int Is_symmetry(char data[], int digit); void print_result(int num, char data[], int digit); void main(){ int i, B, digit; char snum[snum_MAX]; long num; scanf("%d", &B); for(i = 1;i <= 300;i++){ num = (long)i * (long)i; translate(B, num, snum, &digit); if(Is_symmetry(snum, digit)) print_result(i, snum, digit); } } void translate(int N, long decimal_num, char *result_num, int *result_digit){ *result_digit = 0; while(decimal_num){ *result_num = decimal_num % N; result_num++; decimal_num /= N; (*result_digit)++; } *result_num = '\0'; } int Is_symmetry(char data[], int digit){ int i, j; i = 0; j = digit - 1; while(data[i] == data[j] && i <= j){ i++; j--; } return (i > j); } void print_result(int num, char data[], int digit){ while(digit){ digit--; if(data[digit] < 10) data[digit] += 0x30; else data[digit] += 0x37; } printf("%d\t%s\n", num, data); } |
送花文章: 2,
|
2007-09-30, 10:55 PM | #4 (permalink) |
註冊會員
|
各位看官想知道自己答案正確還是錯誤請按
然後在自己程式碼前打上 語法:
/* ID: newjoeb1 PROG: palsquare LANG: 選擇語言名稱(C.C++.PASCAL.JAVA) */ 以下是我的程式碼(好長.....僅供參考 = =) 語法:
/* ID: newjoeb1 PROG: palsquare LANG: C++ */ #include <iostream> #include <fstream> #include <string> #include <math.h> using namespace std; int main() { ofstream fout ("palsquare.out"); ifstream fin ("palsquare.in"); int i,j,m,k,n,l=1,t; char d[301][20],A='A',O='0',a[20]; fin >>n; for(i=1;i<=300;i++){ m=i*i;k=pow(n,l);t=1; if(m/k>0) while(m/k>0){ l++; k=pow(n,l); } for(j=l-1;j>=0;j--){ k=pow(n,j); d[i][j]=m/k; m%=k; } for(j=l;j>l/2;j--) if(d[i][j-1]!=d[i][l-j]){ t=0; break; } if(t==1){ j=0;m=i; while(m>0){ a[j]=m%n; m/=n; j++; } for(;j>0;j--){ if(a[j-1]>9){ A+=a[j-1]-10; fout <<A; A='A'; } else{ O+=a[j-1]; fout <<O; O='0'; } } fout <<" "; for(j=l-1;j>=0;j--){ if(d[i][j]>9){ A+=d[i][j]-10; fout <<A; A='A'; } else{ O+=d[i][j]; fout <<O; O='0'; } } fout <<endl; } } return 0; } |
送花文章: 15,
|