c++的一個int128類
來源http://tringi.trimcore.cz/int128
上述地址下載的是模板化的版本。更早的版本見這裡
和 這裡。
另外一個實現見這裡。
用較早版本實現的p474.
#include <cstdio> #include "int128.h" typedef long long ll; const int NN=1000000; const int N=1000; int main() { int128 result = 1; int128 modB = 10000000000000061LL; static int a[NN+1]= {0}; for(int i=3; i<=N; i++) if(a[i]==0) for(int j=i*i; j<=NN; j+=2*i) if(a[j]==0) a[j]=1; for (ll p = 7; p < NN; p+=2) { if (a[p]==0 && p!=401) { ll po = p; ll total = 0; while(true) { ll add = NN/po; if (add == 0) break; total += add; po*=p; } int128 mult = total+1; result = result*mult%modB; } } result = result*(int128)249997%modB; printf("%lld\n",result.toInt64()); }
使用模板版本的474題,速度快於前一個.
#include <cstdio> #include "int128.hpp" typedef int128_t int128; typedef long long ll; const int NN=1000000; const int N=1000; int main() { int128 result = 1; int128 modB = 10000000000000061LL; static int a[NN+1]= {0}; for(int i=3; i<=N; i++) if(a[i]==0) for(int j=i*i; j<=NN; j+=2*i) if(a[j]==0) a[j]=1; for (ll p = 7; p < NN; p+=2) { if (a[p]==0 && p!=401) { ll po = p; ll total = 0; while(true) { ll add = NN/po; if (add == 0) break; total += add; po*=p; } int128 mult = total+1; result = result*mult%modB; } } result = result*(int128)249997%modB; printf("%s\n",result.c_str(10)); }
相關文章
- 洗牌的一個C++類! (轉)C++
- 一個隨機數的類c++隨機C++
- 分享一個的c++寫的,模仿awk的框架類CAwkDocC++框架
- 【C++】兩個類的相互引用C++
- 實現一個無法被繼承的C++類繼承C++
- C++的一個簡單的控制程式碼類别範本C++
- [C++]類和物件(一)C++物件
- java的一個類!Java
- 演算法:如何使用C++實現一個簡單的集合類演算法C++
- C++ 中兩個類互相引用的問題C++
- C++的代理類C++
- C++ 類的大小C++
- C++學習 類定義(一)C++
- C/C++—— 一個特別奇怪的C++程式C++
- 一個分數類的實現——Rational類
- Model類的一個return作用
- 一個Java類的載入Java
- C++中的容器類C++
- [C++]類的其它特性C++
- c++ 中的集合類C++
- C++中類的sizeofC++
- 第一個C++程式C++
- 如何判斷一個類是從另一個類繼承繼承
- C++中類及類的定義 (轉)C++
- 一個完整的COM通訊類
- 一個聚合的加解密工具類解密
- C++的一個記日誌的程式碼C++
- C++ 一種交換兩個數的思路C++
- binder c++ 類C++
- c++ 模板類C++
- c++模板類C++
- C++ 類 & 物件C++物件
- C++分類C++
- C++啟動一個程式C++
- 驚喜!一個檔案多個【請求類】的另類寫法
- 建模的時候如何確定一個名詞是類還是別一個類的屬性?
- .NET CORE AUTOMAPPER 對映一個類的子類APP
- 一個簡單清晰的Redis操作類Redis