E.J. BLOG

Archive for January, 2009

[Others] 好久不見!

leave a comment

哈 , 很久沒有看到Bu了 , 我是指在現實生活上 !今天我們花了大概3-4個小時待在麥當勞 , 整個就是很速食的感覺= =” , 一直在吃那些不健康的東西 , 這樣大概總有一天會GG吧!

聊了一下我們的FireBall project後 , 就決定要在開學前把它生出來 , 我覺得這個決定是對的 , 要不然要拖多久呀= = ” , 就拭目以待我們的作品吧~

聊完後 , 我們就跑去NOVA買東西 , 我買了一個SanDisk的 MS PRO Duo 2G的記憶卡沒想到還真的找的到= =” 因為市面上都已經絕版了 .. 不過還用550NT的價格買到真的是很爽XD~

之後就回家來搞我的SE k750i , 給它裝了很多themes , games , haha!!晚點再把mp3放進去 , 這讓就可以聽了啦XD~ 為了Macbook 13’的小白 , 只好忍痛先放棄iPod nano了 , 靠我的k750i來擋一陣子吧~

Written by EragonJ

January 31st, 2009 at 8:40 am

Posted in Others

Tagged with ,

[ZeroJudge] a010 因數分解

leave a comment

這題也是有點有趣 , 不過我自己的做法比較笨一點 ,
就是先開個可以容的下題目的array[1000000] , 然後
去存哪些因數有算過就++ , 最後再去總結算 !

要注意的地方:
1.我用了recursive的方法去實做
2.用search function 去找有x個格子的數字不是0 (x-1就是乘號的數目)

大概就是這樣! 如果有什麼比較好的方法請提供一下:D


#include <iostream>
#define MAX 1000000
using namespace std;
int arr[MAX]={0};
void div(int input){
int i;
int sinput = input;
for(i=2;i<=sinput;i++){
if(sinput%i==0){
arr[i]+=1;
sinput/=i;
break;
}
}
if(input!=sinput){
div(sinput);
return ;
}
}
void reset(){
int i;
for(i=0;i<MAX;i++){
arr[i]=0;
}
}
int search(){
int i,count=0;
for(i=2;i<MAX;i++){
if(arr[i]!=0) count++;
}
return count;
}
int main(){

int h,i,k,scount=0;

while(cin >> i){
div(i);
scount = search()-1;
for(k=2;k<MAX;k++){
if(arr[k]!=0){
if(arr[k]==1){
cout << k ;
}else{
cout << k << "^" << arr[k] ;
}
if(scount!=0){
cout << " * " ;
scount--;
}
}
}
cout << endl;
reset();
}
system("pause");
return 0;
}

Written by EragonJ

January 22nd, 2009 at 10:24 am

Posted in ACM

Tagged with , ,

[ACM]412 Pi

leave a comment


這題比較要注意的地方有以下幾點:

1.先把π的公式由數學式導出來
2.要用到數學的排列組合(C X取2這樣)
3.算互質的個數
4.格式化輸出(精確到小數點下第六位)

心得:在算最後一步的時候(求π時) , 要小心那個double的地方 , 因為int
在算的時候會有拾去的情況 , 最好是都用同個型態去算 , 比較不會出問題


#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int c_num(int i){
return (i*(i-1))/2;
}
void sort(int arr[],int num){
int i,j;
for(i=0;i<num-1;i++){
for(j=i+1;j<num;j++){
if(arr[i]<arr[j]){
swap(arr[i],arr[j]);
}
}
}
}
void swap(int* a,int* b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int judge(int a,int b){
int max = (a<b)?a:b;
int min = (a<b)?a:b;
int reminder,quotient;
reminder = max%min;
quotient = max/min;
while(reminder!=0){
max = min;
min = reminder;
quotient = max/min;
reminder = max%min;
}
return min;
}
int main(){

int i,j,k;
int arr[200],count;
while(cin >> i){
count = 0;
if(i==0){
return 0;
}else{
for(j=0;j<i;j++){
cin >> arr[j];
}
sort(arr,i);
for(j=0;j<i-1;j++){
for(k=j+1;k<i;k++){
if(judge(arr[k],arr[j])==1){
count++;
}
}
}
if(count==0){
cout << "No estimate for this data set." << endl;
}else{
printf("%.6lfn",sqrt(((double)(6*c_num(i))/count)));
}
}
}
system("pause");
return 0;
}

Written by EragonJ

January 22nd, 2009 at 6:07 am

Posted in ACM

Tagged with , ,