平方数
来源:互联网 发布:松江少儿编程 编辑:程序博客网 时间:2024/04/29 06:33
平方数
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 3 Accepted Submission(s) : 3
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Square number is very popular in ACM/ICPC. Now here is a problem about square number again.
Let's consider such a kind of number called K-Omitted-Square-Number(K-OSN). N is a K-OSN if:
(1) It is a square number.
(2) Its last digit is not 0.
(3) It's not less than 10^K.
(4) If its last K digits are omitted, it's still a square number.
Now, given an even number K, you have to find the largest K-OSN.
Let's consider such a kind of number called K-Omitted-Square-Number(K-OSN). N is a K-OSN if:
(1) It is a square number.
(2) Its last digit is not 0.
(3) It's not less than 10^K.
(4) If its last K digits are omitted, it's still a square number.
Now, given an even number K, you have to find the largest K-OSN.
Input
There are multiple test cases in this problem.
The first line will contain a single positive integer T(T<=20) indicating the number of test cases. Each test case will be a single line containing an even number K(2<=K<=200).
The first line will contain a single positive integer T(T<=20) indicating the number of test cases. Each test case will be a single line containing an even number K(2<=K<=200).
Output
For each test case, print a single line containing the largest K-OSN. In case that it will be very large, you just need to print the number module 2009. If there are no K-OSN, or if the largest K-OSN doesn't exist, print "Oops!"(without quotes).
Sample Input
14
Sample Output
197
Author
//数学题: 假定 m=a*10^k/2+b (a,b未知) N=m*m=a*a*10^k+b*b+2*a*b*10^k/2
那么 b*b+2*a*b*10^k/2<10^k 因为要使m最大,那么b取最小,a取越大,所以b等于1 带入不等式然后对a取整就可以求得a,b。 a<(10^k-1)/(2*10^k/2)
但是我们可以发现,当k=2时,a=4 k=4 , a=49 k=6 a=499 ......所以我们可以构造出m,然后直接求出n.
#include<stdio.h>const int MAXK=200; //最大的Kconst int MODNUM=2009; //用于取模的数int main(){ int tn,i; //tn为数据组数 int k,ans; //题目输入的K int digit[MAXK+10],dn; //用于存放答案的数组和数组的长度 scanf("%d",&tn); while(tn--) { scanf("%d",&k); dn=0; digit[++dn]=4; //根据规律来构造答案 for(i=1;i<k/2;i++) digit[++dn]=9; for(i=1;i<k/2;i++) digit[++dn]=0; digit[++dn]=1; // for(i=1;i<=dn;i++) //printf("%d ",digit[i]); // printf("\n"); for(ans=0,i=1;i<=dn;i++) ans=(ans*10+digit[i])%MODNUM; //printf("%d\n",ans); ans=(ans*ans)%MODNUM; printf("%d\n",ans); } return 0;}
0 0
- 平方数
- 平方数
- 平方数
- 平方数
- 平方数
- 平方数
- 平方数
- 平方数
- 平方数
- 平方数
- 平方数
- 关于完全平方数
- 平方数的构建
- 得到一个平方数
- 平方数判别
- 回文平方数
- 2499. 平方数
- FOJ 1400 平方数
- ios html 加载传入json 语言,把“” 替换成‘然后再进行转义 ,否则会出现错误
- 教你透彻了解红黑树
- Rails4.1 Action Controller 概述
- 【ThinkingInC++】6、内存存放地址的地方
- Notepad++背景颜色设置
- 平方数
- GPU(显卡)的开源驱动调研
- js中创建json对象
- ANDROID sdk开发,修改字体Typeface实例
- js data 格式转换
- 【ThinkingInC++】7、空指针
- LeetCode | Search in Rotated Sorted Array(在旋转数组中查找)
- 焊锡丝的含锡量越高越好吗?
- Android Widget 小部件(二) 使用configure