CSU 1337 搞笑版费马大定理(2013湖南省程序设计竞赛J题)
生活随笔
收集整理的這篇文章主要介紹了
CSU 1337 搞笑版费马大定理(2013湖南省程序设计竞赛J题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1337
解題報告:雖然x和y的范圍都是10^8,但是如果a 是大于1000的話,那么a^3就會大于10^9,這樣等號的右邊只有一個10 * c + 3,這個最大只能達到10^9數量級,所以,不管輸入的x跟y是多少,我們只要取其中的在1到1000的區間就可以了,枚舉a和b,那么c就可以得到,然后判斷c的范圍是不是在x到y之間,這樣時間復雜度就降到了10^6.
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #include<cstdlib> 6 using namespace std; 7 typedef long long INT; 8 INT th[1005]; 9 void dabiao() 10 { 11 for(INT i = 1;i <= 1000;++i) 12 th[i] = i * i * i; 13 } 14 int main() 15 { 16 dabiao(); 17 INT x,y; 18 int kase = 1; 19 while(scanf("%lld%lld",&x,&y)!=EOF) 20 { 21 INT ans = 0; 22 INT a = min(x,(INT)1000); //不存在大于1000的 23 INT b = min(y,(INT)1000); 24 for(INT i = a;i <= b;++i) 25 for(INT j = a;j <= b;++j) 26 { 27 INT s = th[i] + th[j]; 28 if(s % 10 == 3 && s / 10 <= y) 29 ans++; 30 } 31 printf("Case %d: %lld\n",kase++,ans); 32 } 33 return 0; 34 } View Code?
轉載于:https://www.cnblogs.com/xiaxiaosheng/p/4005339.html
總結
以上是生活随笔為你收集整理的CSU 1337 搞笑版费马大定理(2013湖南省程序设计竞赛J题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (计算机组成原理)第一章计算机系统概述-
- 下一篇: android内部通信handler