首页 > 代码库 > 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 }
CSU 1337 搞笑版费马大定理(2013湖南省程序设计竞赛J题)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。