First Blood(C语言)
来源:互联网 发布:加密国际算法有哪些 编辑:程序博客网 时间:2024/04/29 04:58
Description
盖伦是个小学一年级的学生,在一次数学课的时候,老师给他们出了一个难题:
老师给了一个正整数 n,需要在不大于n的范围内选择三个正整数(可以是相同的),使它们三个的最小公倍数尽可能的大。盖伦很想第一个解决这个问题,你能帮助盖伦拿到“first blood”吗?
Input
首先是一个正整数T,表示有T组测试数据
每组测试数据是一个正整数n(1<=n<=10^6)
Output
对于每组测试数据,输出最大的最小公倍数,每个输出单独占一行
Sample Input
2
9
7
9
7
Sample Output
504
210
题目链接: http://ccpc.ahu.edu.cn:8080/OJ/Problem.aspx?id=739
AC代码:
#include<stdio.h>int main(){ int T,i; scanf("%d",&T); __int64 n;//注意题目的要求范围,试用临界点是否满足数位不够用长长整型 while(T--){//遇到组数的最好用T--的方法,不是遇到scanf函数为特别的值的问题可以不用scanf的值来终止 scanf("%I64d",&n); //for(j=0;j<n;j++){ // a[j]=j; //} if(n==1) printf("1\n"); else if(n==2) printf("2\n"); else if(n%2!=0) printf("%I64d\n",n*(n-1)*(n-2)); //同样也是分为奇偶讨论,在偶数状态时是否为3的倍数也在讨论的范围内。 else { if(n%3!=0) printf("%I64d\n",n*(n-1)*(n-3)); else printf("%I64d\n",(n-3)*(n-1)*(n-2)); //长长整形输出是用%I64d
} // n=0; } return 0;}要点:
题目算法不难,但要考虑周到有点困难。不要只向着某一个思维点,这个题目不同情况下如何取最大值是要点,要想到退位数比除二更大
注意:
尝试样例输出时必须要尝试临界条件上的点是否满足。不能只针对所给的样列输出
阅读全文
0 0
- First Blood(C语言)
- First Blood (最大最小公倍数)
- 瀑布流(first blood。。。)
- First blood...
- First blood...
- First Blood
- first blood
- first blood
- first blood
- first blood!
- First blood
- First Blood
- first blood
- First Blood
- first blood
- first blood
- First Blood
- first blood!
- less的使用
- JavaScript/jQuery中函数调用加不加括号,加不加引号的解析
- 乘法口诀
- java总结
- 【论文阅读】Addressing the RareWord Problem in NeuralMachine Translation
- First Blood(C语言)
- C++学习日志之二—贪吃蛇网游化框架搭建3通信部分
- Swift中的typealias(别名)的用法
- 浅析Python运行原理
- java初学者买衣服案例
- Jquery方法click() bind() live() delegate()区别
- hibernate demo 搭建
- Day13-XML
- ScrollView组件