史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2007-08-24, 11:06 PM   #1
joebin
註冊會員
 
joebin 的頭像
榮譽勳章

勳章總數
UID - 270712
在線等級: 級別:2 | 在線時長:16小時 | 升級還需:5小時級別:2 | 在線時長:16小時 | 升級還需:5小時
註冊日期: 2007-06-06
住址: 過去*現在*未來
文章: 42
精華: 0
現金: 58 金幣
資產: 118 金幣
Post 程式 - 好題目跟好朋友分享

題目:

輸入一個數字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 編輯.
joebin 目前離線  
送花文章: 15, 收花文章: 18 篇, 收花: 28 次
回覆時引用此帖
舊 2007-08-26, 10:15 AM   #2 (permalink)
協調管理員
 
飛鳥 的頭像
榮譽勳章
UID - 23073
在線等級: 級別:72 | 在線時長:5513小時 | 升級還需:108小時級別:72 | 在線時長:5513小時 | 升級還需:108小時
註冊日期: 2003-01-07
VIP期限: 無限期
住址: 史萊姆團隊
文章: 7199
精華: 11
現金: 837 金幣
資產: 260029 金幣
預設

看不太懂@@
__________________
http://flybird017.googlepages.com/quok.gif http://flybird020.googlepages.com/new321.gif
寶貝你我的地球
, 請 少開電器,減少溫室氣體排放外,多種植植物,減少列印, 多用背面,丟棄時做垃圾分類。

http://netgames123.googlepages.com/tobikeways.jpg

飛鳥 目前離線  
送花文章: 11706, 收花文章: 3363 篇, 收花: 16453 次
回覆時引用此帖
舊 2007-08-26, 03:31 PM   #3 (permalink)
註冊會員
榮譽勳章
UID - 257587
在線等級: 級別:9 | 在線時長:124小時 | 升級還需:16小時級別:9 | 在線時長:124小時 | 升級還需:16小時級別:9 | 在線時長:124小時 | 升級還需:16小時級別:9 | 在線時長:124小時 | 升級還需:16小時
註冊日期: 2006-11-20
文章: 26
精華: 0
現金: 16 金幣
資產: 16 金幣
預設

用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);
}
wenneng 目前離線  
送花文章: 2, 收花文章: 7 篇, 收花: 8 次
回覆時引用此帖
舊 2007-09-30, 10:55 PM   #4 (permalink)
註冊會員
 
joebin 的頭像
榮譽勳章

勳章總數
UID - 270712
在線等級: 級別:2 | 在線時長:16小時 | 升級還需:5小時級別:2 | 在線時長:16小時 | 升級還需:5小時
註冊日期: 2007-06-06
住址: 過去*現在*未來
文章: 42
精華: 0
現金: 58 金幣
資產: 118 金幣
預設

各位看官想知道自己答案正確還是錯誤請按

然後在自己程式碼前打上

語法:
/*
ID: newjoeb1
PROG: palsquare
LANG: 選擇語言名稱(C.C++.PASCAL.JAVA)
*/
下方有個上傳檔案,請以txt的方式上傳

以下是我的程式碼(好長.....僅供參考 = =)


語法:
/*
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;
}
joebin 目前離線  
送花文章: 15, 收花文章: 18 篇, 收花: 28 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 02:39 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1