亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? pi.cpp

?? 使用C++模板元編程求pi值
?? CPP
字號(hào):
/* struct Place : 求 N 有多少位數(shù)字
 */
template <long long N>
struct Place;

template <long long N>
struct Place
{
  static const int value = Place<N / 10>::value + 1;
  static const int place = value;
};

template <>
struct Place<0>
{
  static const int value = 0;
  static const int place = 1;
};

/* struct Sqrt : 開(kāi)平方,結(jié)果為 value
 */
template <long long N>
struct Sqrt;

/* struct Exp10 : 10 的 N 次方冪,也就是 1 后加 N 個(gè)零
 */
template <int N>
struct Exp10
{
  static const long long value = Exp10<N-1>::value * 10;
};

template <>
struct Exp10<0>
{
  static const long long value = 1;
};

/* struct SqrtTwoPlace : 求兩位數(shù)以下的整數(shù)的平方根
 */
template <long long N>
struct SqrtTwoPlace
{
  static const long long value = SqrtTwoPlace<N-1>::value;
};

#define SqrtTwoPlaceDef(NN, N) template <> struct SqrtTwoPlace<NN> \
{ static const long long value = N; }

SqrtTwoPlaceDef (0, 0);
SqrtTwoPlaceDef (1, 1);
SqrtTwoPlaceDef (4, 2);
SqrtTwoPlaceDef (9, 3);
SqrtTwoPlaceDef (16, 4);
SqrtTwoPlaceDef (25, 5);
SqrtTwoPlaceDef (36, 6);
SqrtTwoPlaceDef (49, 7);
SqrtTwoPlaceDef (64, 8);
SqrtTwoPlaceDef (81, 9);

/* struct SqrtDiv : 求 N 開(kāi)平方的結(jié)果
 */
template <bool finish, long long N, long long x>
struct SqrtDiv;

template <long long N, long long x0>
struct SqrtDiv<false, N, x0>
{
private:
  static const long long x = (N / x0 + x0) / 2;
  static const bool finish = (x*x <= N) && ((x+1)*(x+1) > N);

public:
  static const long long value = SqrtDiv<finish, N, x>::value;
};

template <long long N, long long x>
struct SqrtDiv<true, N, x>
{
  static const long long value = x;
};

/* struct Sqrt : 開(kāi)平方
 */
template <long long N>
struct Sqrt
{
private:
  static const int place = Place<N>::value;
  static const int zero = (place % 2 == 1) ? place - 1 : place - 2;
  static const long long  head = N / Exp10<zero>::value;

  static const long long x0 = SqrtTwoPlace<head>::value
                              * Exp10<zero / 2>::value;

public:
  static const long long value = SqrtDiv<false, N, x0>::value;
};

template <>
struct Sqrt<0>
{
  static const long long value = 0;
};

/* struct Fraction : 分?jǐn)?shù),first 為分子,second 為分母。value 為 double 值
 */
template <long long M, long long N>
struct Fraction;

template <long long M, long long N>
struct Fraction
{
  static const long long first = M;
  static const long long second = N;

  static const double value = static_cast<double>(first) / second;
};

/* struct FractionSqrt : 開(kāi)平方。分子、分母同時(shí)開(kāi)方
 */
template <typename FractionType>
struct FractionSqrt
{
private:
  static const long long first1 = FractionType::first;
  static const long long second1 = FractionType::second;

  static const long long first = Sqrt<first1>::value;
  static const long long second = Sqrt<second1>::value;
public:
  typedef Fraction<first, second> ValueType;
};

/* struct FractionSqrt2 : 開(kāi)平方,但保持分母不變
 */
template <typename FractionType>
struct FractionSqrt2
{
private:
  static const long long first1 = FractionType::first;

  static const long long second = FractionType::second;
  static const long long first = Sqrt<first1 * second>::value;
public:
  typedef Fraction<first, second> ValueType;
};

/* struct FractionAdd : 加法,結(jié)果為 ValueType
 */
template <typename FractionType1, typename FractionType2>
struct FractionAdd
{
private:
  static const long long first1 = FractionType1::first;
  static const long long second1 = FractionType1::second;
  static const long long first2 = FractionType2::first;
  static const long long second2 = FractionType2::second;
  static const long long first = first1 * second2 + first2 * second1;
  static const long long second = second1 * second2;
public:
  typedef Fraction<first, second> ValueType;
};

template <long long First1, long long First2, long long Second>
struct FractionAdd<Fraction<First1, Second>, Fraction<First2, Second> >
{
private:
  static const long long first = First1 + First2;
  static const long long second = Second;
public:
  typedef Fraction<first, second> ValueType;
};

/* struct FractionSub : 減法,結(jié)果為 ValueType
 */
template <typename FractionType1, typename FractionType2>
struct FractionSub
{
private:
  static const long long first1 = FractionType1::first;
  static const long long second1 = FractionType1::second;
  static const long long first2 = FractionType2::first;
  static const long long second2 = FractionType2::second;
  static const long long first = first1 * second2 - first2 * second1;
  static const long long second = second1 * second2;
public:
  typedef Fraction<first, second> ValueType;
};

template <long long First1, long long First2, long long Second>
struct FractionSub<Fraction<First1, Second>, Fraction<First2, Second> >
{
private:
  static const long long first = First1 - First2;
  static const long long second = Second;
public:
  typedef Fraction<first, second> ValueType;
};

/* struct FractionMul : 乘法,結(jié)果在 ValueType
 */
template <typename FractionType1, typename FractionType2>
struct FractionMul
{
private:
  static const long long first1 = FractionType1::first;
  static const long long second1 = FractionType1::second;
  static const long long first2 = FractionType2::first;
  static const long long second2 = FractionType2::second;
  static const long long first = first1 * first2;
  static const long long second = second1 * second2;
public:
  typedef Fraction<first, second> ValueType;
};

template <long long First1, long long First2, long long Second1>
struct FractionMul<Fraction<First1, Second1>, Fraction<First2, First1> >
{
private:
  static const long long first = First2;
  static const long long second = Second1;
public:
  typedef Fraction<first, second> ValueType;
};

template <long long First1, long long First2, long long Second1>
struct FractionMul<Fraction<First2, First1>, Fraction<First1, Second1> >
{
private:
  static const long long first = First2;
  static const long long second = Second1;
public:
  typedef Fraction<first, second> ValueType;
};

template <long long First, long long Second>
struct FractionMul<Fraction<First, Second>, Fraction<Second, First> >
{
private:
  static const long long first = 1;
  static const long long second = 1;
public:
  typedef Fraction<first, second> ValueType;
};

/* struct FractionDiv : 除法,結(jié)果為 ValueType
 */
template <typename FractionType1, typename FractionType2>
struct FractionDiv
{
private:
  static const long long first1 = FractionType1::first;
  static const long long second1 = FractionType1::second;
  static const long long first2 = FractionType2::first;
  static const long long second2 = FractionType2::second;
  static const long long first = first1 * second2;
  static const long long second = first2 * second1;
public:
  typedef Fraction<first, second> ValueType;
};

template <long long First1, long long First2, long long Second>
struct FractionDiv<Fraction<First1, Second>, Fraction<First2, Second> >
{
private:
  static const long long first = First1;
  static const long long second = First2;
public:
  typedef Fraction<first, second> ValueType;
};

template <long long First, long long Second1, long long Second2>
struct FractionDiv<Fraction<First, Second1>, Fraction<First, Second2> >
{
private:
  static const long long first = Second2;
  static const long long second = Second1;
public:
  typedef Fraction<first, second> ValueType;
};

template <long long First, long long Second>
struct FractionDiv<Fraction<First, Second>, Fraction<First, Second> >
{
private:
  static const long long first = 1;
  static const long long second = 1;
public:
  typedef Fraction<first, second> ValueType;
};

/* struct FractionAdjust : 調(diào)整分母,使分母的大小為 SECOND
 */
template <typename FractionType, long long SECOND = 100000000LL>
struct FractionAdjust
{
private:
  static const long long first1 = FractionType::first;
  static const long long second1 = FractionType::second;

  static const long long first2 = ((second1 < SECOND)
                                   ? SECOND * first1 : first1);
  static const long long second2 = ((second1 < SECOND)
                                    ? SECOND * second1 : second1);

  static const long long div = second2 / SECOND;
  static const long long first = first2 / div;
  static const long long second = second2 / div;
public:
  typedef Fraction<first, second> ValueType;
};


/* struct PI : 是一個(gè) Fraction,
 */
struct PI;

static const long long BASE = 100000000LL;
typedef Fraction<2, 1> Two;                     // 常量 2

/* struct PIItem : 是 Pi 的一項(xiàng)
*/
template <int N>
struct PIItem
{
private:
  typedef typename PIItem<N-1>::ValueType Value1;
  typedef typename PIItem<N-1>::ItemType Item1;

  typedef typename FractionAdd<Item1, Two>::ValueType ItemAddTwo;
public:
  typedef typename FractionSqrt2<ItemAddTwo>::ValueType ItemType;
private:
  typedef typename FractionDiv<Two, ItemType>::ValueType TwoDivItem;
  typedef typename FractionMul<Value1, TwoDivItem>::ValueType ValueResult;
public:
  typedef typename FractionAdjust<ValueResult, BASE>::ValueType ValueType;
};

template <>
struct PIItem<0>
{
  typedef Two ValueType;
  typedef Fraction<0, BASE> ItemType;
};

struct PI : public PIItem<50>::ValueType
{
};


#include <iostream>
#include <cstdlib>
using namespace std;

int
main ()
{
  cout.precision (10);
  cout << PIItem<0>::ItemType::value << endl;
  cout.precision (10);
  cout << PIItem<1>::ItemType::value << endl;
  cout.precision (10);
  cout << PIItem<2>::ItemType::value << endl;
  cout.precision (10);
  cout << PIItem<4>::ItemType::value << endl;
  cout.precision (10);
  cout << PIItem<8>::ItemType::value << endl;
  cout.precision (10);
  cout << PIItem<16>::ItemType::value << endl;
  cout.precision (10);
  cout << PIItem<32>::ItemType::value << endl;
  cout.precision (10);
  cout << PIItem<64>::ItemType::value << endl;
  cout.precision (10);
  cout << PIItem<128>::ItemType::value << endl;
  
  cout.precision (10);
  cout << PI::value << endl;
  system ("Pause");
  return 0;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人激情综合网站| 欧美α欧美αv大片| 日韩午夜激情视频| 国产精品久久久久aaaa樱花| 日韩在线卡一卡二| 99久久伊人网影院| 久久一夜天堂av一区二区三区| 亚洲免费观看高清完整版在线观看 | 亚洲欧洲国产日韩| 久久99精品国产麻豆婷婷| 欧美影视一区二区三区| 国产日韩精品一区| 久久99精品久久久久久国产越南| 在线观看日产精品| 亚洲人成小说网站色在线| 国产精品一区2区| 欧美私人免费视频| 一区二区三区在线播| 成人白浆超碰人人人人| 国产三级一区二区| 经典三级在线一区| xf在线a精品一区二区视频网站| 亚洲国产成人91porn| 91麻豆国产香蕉久久精品| 国产视频911| 国产高清不卡一区二区| 亚洲精品一区在线观看| 捆绑紧缚一区二区三区视频| 欧美一区二区三区免费在线看| 亚洲综合一区二区三区| 91论坛在线播放| 亚洲激情网站免费观看| 欧美午夜电影一区| 肉色丝袜一区二区| 欧美一级久久久| 蜜臀va亚洲va欧美va天堂| 制服丝袜成人动漫| 美女在线一区二区| 欧美变态tickling挠脚心| 国产一区二区精品久久99| 国产日韩精品一区二区浪潮av| 国产福利一区二区三区| 亚洲欧洲色图综合| 一本色道久久综合亚洲精品按摩| 亚洲三级电影网站| 欧美午夜精品久久久久久超碰| 天堂一区二区在线| 日韩精品最新网址| 成人精品国产福利| 亚洲小说欧美激情另类| 欧美一区二区三区在线观看| 精品无人码麻豆乱码1区2区 | 裸体健美xxxx欧美裸体表演| 欧美不卡一二三| 成人精品视频.| 一区二区三区欧美日| 日韩亚洲国产中文字幕欧美| 国产宾馆实践打屁股91| 亚洲欧美另类综合偷拍| 日韩一卡二卡三卡| 成人av网站免费观看| 亚洲午夜精品17c| 精品奇米国产一区二区三区| 99久久99久久精品国产片果冻 | 老司机午夜精品99久久| 国产欧美一区视频| 欧美亚洲一区二区在线观看| 久久国产精品无码网站| 国产精品久久福利| 一区在线中文字幕| 欧美videos中文字幕| 91在线免费看| 极品少妇xxxx精品少妇| 一区二区免费在线播放| 精品粉嫩超白一线天av| 色综合久久久久| 国产在线精品国自产拍免费| 亚洲精品第1页| 精品国产凹凸成av人导航| 91福利国产精品| 国产精品 欧美精品| 污片在线观看一区二区| 中文字幕一区二区日韩精品绯色| 91麻豆精品国产自产在线| 成人晚上爱看视频| 久久精品国产一区二区三| 一区二区三区在线观看网站| 久久精品亚洲精品国产欧美kt∨ | 亚洲h精品动漫在线观看| 国产喷白浆一区二区三区| 欧美人与性动xxxx| www.av亚洲| 国产sm精品调教视频网站| 日韩激情中文字幕| 亚洲嫩草精品久久| 国产精品午夜久久| www久久精品| 欧美成人免费网站| 欧美日韩的一区二区| 91在线丨porny丨国产| 国产成人无遮挡在线视频| 久久99精品国产麻豆婷婷洗澡| 首页综合国产亚洲丝袜| 亚洲一区二区中文在线| 一区二区在线观看av| 国产精品久久久久aaaa樱花| 亚洲国产精品99久久久久久久久 | 欧美性受xxxx黑人xyx| 国产成人精品1024| 国产麻豆一精品一av一免费| 麻豆成人久久精品二区三区红 | 一区二区三区中文字幕电影| 国产精品久久久久久久久搜平片| 久久嫩草精品久久久精品| 日韩精品中文字幕在线一区| 日韩久久久精品| 精品国内二区三区| 久久综合999| 国产欧美日韩一区二区三区在线观看 | 色综合网站在线| www.一区二区| 91色porny在线视频| 一道本成人在线| 色拍拍在线精品视频8848| 日本韩国精品在线| 欧美色精品天天在线观看视频| 欧美日本一区二区在线观看| 91精品国产福利| 精品处破学生在线二十三| 香港成人在线视频| 视频一区在线视频| 蜜桃视频一区二区三区| 经典三级视频一区| av不卡免费电影| 91福利区一区二区三区| 欧美一区二区三区小说| 日韩精品最新网址| 中文字幕一区二区日韩精品绯色| 亚洲精品精品亚洲| 日本aⅴ免费视频一区二区三区| 蓝色福利精品导航| 99久久免费国产| 欧美精品1区2区3区| 久久男人中文字幕资源站| 最新久久zyz资源站| 亚洲成av人片在线观看| 黄色精品一二区| a4yy欧美一区二区三区| 欧美日韩激情在线| 国产午夜亚洲精品羞羞网站| 亚洲精品视频一区二区| 美腿丝袜一区二区三区| 91网站黄www| 日韩欧美高清dvd碟片| 中文字幕视频一区| 青青草97国产精品免费观看无弹窗版 | 91久久一区二区| 精品国产百合女同互慰| 亚洲另类春色校园小说| 九九精品一区二区| 91国产免费看| 久久久久久久国产精品影院| 夜夜嗨av一区二区三区| 国产精品亚洲成人| 欧美日韩高清一区二区三区| 中文字幕国产一区二区| 奇米色一区二区| 色香蕉久久蜜桃| 久久久精品蜜桃| 蜜臀av一区二区三区| 一道本成人在线| 国产精品色噜噜| 国内久久精品视频| 欧美丰满一区二区免费视频| √…a在线天堂一区| 国产精品一二一区| 欧美一区二区三区视频在线 | 欧美羞羞免费网站| 国产精品无遮挡| 国内精品久久久久影院色| 欧美欧美午夜aⅴ在线观看| 亚洲精品亚洲人成人网在线播放| 国产一区二区毛片| 精品av综合导航| 日本不卡高清视频| 欧美日韩国产首页在线观看| 亚洲视频每日更新| 99视频一区二区三区| 国产欧美日韩精品一区| 国模大尺度一区二区三区| 精品乱人伦小说| 久久99精品国产麻豆婷婷| 日韩欧美电影一二三| 美国精品在线观看| 日韩视频免费直播| 久热成人在线视频| 精品美女一区二区| 老司机免费视频一区二区三区| 日韩一区和二区| 美女视频黄频大全不卡视频在线播放|