#3782: 為啥TMP編不過


Templar (甜不辣)

學校 : 國立臺中第一高級中學
編號 : 11753
來源 : [60.250.238.157]
最後登入時間 :
2010-07-05 16:05:26
d212. 東東爬階梯 | From: [220.130.233.177] | 發表日期 : 2010-05-28 13:05

/***
 
以下的code我在VC2005編的過,為啥在此會CE(編譯錯誤!!遭到監控程式強制中斷!)
 
***/ 
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;

typedef unsigned long long int uint64;
uint64 X[100];

template<int n>
struct Array
{
  static const uint64 ullNum = (uint64)(Array<n-1>::ullNum) + (uint64)(Array<n-2>::ullNum);
inline static uint64 func() {
Array<n-1>::func();
return X[n] = ullNum;
}
};

template<>
struct Array<2>
{
  static const uint64 ullNum = 2;
inline static uint64 func() {
Array<1>::func();
return X[2] = 2;
}
};

template<>
struct Array<1>
{
  static const uint64 ullNum = 1;
inline static uint64 func() {
return X[1] = 1;
}
};


int main(void)
{
Array<92>::func();
const int Max = 80;
int n;
while(scanf("%d",&n)!=EOF)
{
if (n>0 && n<=92)
printf("%llu\n",X[n]);
else
printf("Input out off range!!\n");
}
return 0;
}
 
 
 
#3783: Re:為啥TMP編不過


Templar (甜不辣)

學校 : 國立臺中第一高級中學
編號 : 11753
來源 : [60.250.238.157]
最後登入時間 :
2010-07-05 16:05:26
d212. 東東爬階梯 | From: [220.130.233.177] | 發表日期 : 2010-05-28 13:15

/** 

稍微修改一下,但一樣是CE

**/ 

#include <cstdlib>

#include <iostream>

#include <cmath>

using namespace std;

 

typedef unsigned long long int uint64;

uint64 X[100];

 

template<int n>

struct Array

{

inline static uint64 func() {

return X[n] = Array<n-1>::func() + X[n-2];

}

};

 

template<>

struct Array<2>

{

inline static uint64 func() {

Array<1>::func();

return X[2] = 2;

}

};

 

template<>

struct Array<1>

{

inline static uint64 func() {

return X[1] = 1;

}

};

 

 

int main(void)

{

Array<92>::func();

const int Max = 80;

int n;

while(scanf("%d",&n)!=EOF)

{

if (n>0 && n<=92)

printf("%llu\n",X[n]);

else

printf("Input out off range!!\n");

}

return 0;

}

 

 
#3786: Re:為啥TMP編不過


linishan (L)

學校 : 國立交通大學
編號 : 1090
來源 : [104.132.150.102]
最後登入時間 :
2019-05-10 19:57:54
d212. 東東爬階梯 | From: [125.228.232.178] | 發表日期 : 2010-05-28 22:34

/** 

稍微修改一下,但一樣是CE

**/ 

#include

#include

#include

using namespace std;

 

typedef unsigned long long int uint64;

uint64 X[100];

 

template

struct Array

{

inline static uint64 func() {

return X[n] = Array::func() + X[n-2];

}

};

 

template<>

struct Array<2>

{

inline static uint64 func() {

Array<1>::func();

return X[2] = 2;

}

};

 

template<>

struct Array<1>

{

inline static uint64 func() {

return X[1] = 1;

}

};

 

 

int main(void)

{

Array<92>::func();

const int Max = 80;

int n;

while(scanf("%d",&n)!=EOF)

{

if (n>0 && n<=92)

printf("%llu\n",X[n]);

else

printf("Input out off range!!\n");

}

return 0;

}

 


VC 編譯器不一定按照標準 .. (好像是這樣.)

建議你使用Dev C++ coding.

 

由於不會物件導向 .

不知道錯誤是什麼 . . . 

 
ZeroJudge Forum