Description
Input
Output
Sample Input1
1
1 4
Sample Output1
4 5
Sample Explanation1
![[UOJ 12]猜数 [UOJ 12]猜数](/default/index/img?u=ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFjRUFBQUFiQ0FJQUFBQ0xDNk5DQUFBQUEzTkNTVlFJQ0FqYjRVL2dBQUFLNTBsRVFWUjRYdTJjZTFRVTF4M0haeGRZRUFVdFVyRkZRU3Rxb1VGSmRqVXhSaFFhTVNZY2ZMUjVlQXdhU0RYb3FTZEtGRVdEeGlRS3NSS05ObEZpRENBWVBhS2VxSW1lTnNhM1VoOUlWQ0FLRllQNE5vS0F3TEtQbWM3dUxNUHMzTGwzWm1mWmdlcWRQL2E0djdtLzMvM09aKzc5N3AySHFDaUtJdkNHQ1dBQ21BQW1JSXVBV2xZV1RzSUVNQUZNQUJPd0VNQWVpc2NCSm9BSllBTHlDV0FQbGM4T1oySUNtQUFtZ0QwVWp3Rk1BQlBBQk9RVHdCNHFueDNPeEFRd0FVekFYVEVFT3AzdTNMbHp2TzRFZzJ3YjlGNlljakNMRytIdEZmM0s2d1U4QkpnTXV6alpVUEhqTjF2MlhLajNleTRwZFZwb0YwbEpqMkVqNDQzdjEyY1ZQdXJSTCtMRnlTOFA5Wk0rK2pCQWRqUmdoazVPRE5rQUlmMnFGSHUzaVhZcmlBWUNaa3lPR2h5M1ByY216ME5CR1d4anJraHVrUGszNk01Z0thR0k4WHBld3F1YmZOL0xYdjNxQUcrVlVJdjJqNUgxRlFkejErUTNKMzJaTXNRTFhwNnNPWmFSblBGdHlUM2ZDWnUvU3h1S2FBbXZnZDVETlYzNGRIcDYxL1F0U1NFYWEwdktjT2ZvcXNTVU0rTnlDOTROOVVRbjIvWXFEZEJjVTdSMWJmYkpHM2VyYnhrREk2ZlBtek1oekFkK3hlWXlobkFaL3djTTJSTUxEQURnbExzTW9LVW40WWtnQXlBZ3V6VWdmU1VBTFNGOUIraVZvdTdHYzE1dWU3Q2FvQkxRK0dEMnlxU3pkaWxZVFZiUTlHdkZUYkxmWDhmMFY4WkFteS85TS9XTGNwV3E2c1NaaGxkbW9GLy9WZnRGTGxyMXNPS1ZsZDRqZzZYNW1ZTUU5T1c1SDI2N1prcHNTMU5wZWcrTEh1eSs1MUoxTXhYcUtla25SVm1BeHVwZHl6ZnAzL2wwWTFpWGxzcUNlZkVyWnR5Z2RxeWJIQWliS3k1aWlKTFI2Um0yblc1d0FBQWp5RVVBQ2NSRWtBRVFrTjBhZ0kwTGFJTHJkdkE4RWZRK1o3cG12RmlLN2JLdXpRaVFJa09zT0dVeW1BbVZXcEpkT0hPUXR0d3U0WDlmdTRIUVgwcVBPL09EaEhLTlY0NlVVd1BlL2FPUEMvUVpydTFhZjZpT0lMcmE2MUNwM2RXRXlXQ2kvVjFTcDRvQ05ONzhvYUR3aW05bzVadGhUM24vSVhibXVDOW43TTNaWFJrN1p4Q3pqaFpDNmdLR1lqSTZOVU9XRVdRQUFBeGRBSkFnMEJQQlVZQ0E1dFlBL0FvRm1xTEVEdEM1V0d0enFIdHVIZTYxT1Ixbk5tNDFyaFh5THQ2WnhsSXNXRkFlYVNKcEQrMmNyUFhYanBlMEJJNTgydDlOVUxvelFkT3Q3N0pLSTk4YTdnTVVVYXZWRkdra2dUZ3NvQ1JBTjU5K2d3TEloN1hOWnNzUzNxTkhvQzlCMU4ydU04RzAwWEZYTUJTVjBaa1oybGpCQndBUHBpc0FJczRYczh0UmdMQ0NuV2dkeWtwa3ZJejU1T3FtSTZJdUJyYmhPaU5UalhjdHp3U1pSRjZuZEVzbWp1NFh2WmUrQTJnMm1pbTFtOHB1eldYNjlVeit1dndTb3FlWDN0emR2YUxJUHkwM09jd2xsOU93YzIrTkcyK2ZQVmREcUgvWmxyRk1mNys2dHUvVVpmUCszTnNEbVNKeEozbi8wTVpURVVsTGUzKzFBY2hRdWFrSXM4a014Q0VCUlFHcWUwYXYyQmR0VTBJMlhQM3BEcUVPR3g2RXVGWHNFb2FpTWpvelF5czkxQUN3UDlFdUFRZ1pTMjFoS1FCQjl3RExLdXFob0MyQ2dtQ2lRWE9rY3dVTGNsdXl5MG13STE2RTlVR21KcSt5WU8raU5hME55UHFTZ3B4aUQ5MmNjTjgyRHlWcmpxOU1XSFl6UG1mOWEwRnVON2ZIVDlqdmxlWVBPRmRUMlpiVmVXVk5zRHVhYXAraENmT25ERVQ3TGl6WkpwNnN2WFQ4T2hFNE9YYjJ3a2gvL2VuVTJKUlZ6K295UjNmbjJyMHNHZVREd2szN2cyWitFdVJlQ25MeUdod1g4N3NGdXd2T2prNGEza3NqY2pudkJFQzZaMW5pV2NYTlArZXRLM1RUSlM4ZUh3Qy9paEJsNkp3R1dveVFES1VZeWhXUEhBRDJRMElVb05QbmtTNEFUQVJ4Z095c0Y1bis5SE41WlRhdFZndDJ4QXN5WCtsUHdRMU1seExoMXFUYkMvYkkxbUVic3kxNVNxVDAyTmJHVUxVemVaeFdHNU42NEphQmswbldGYVpGYTJQU0x6UlpnaTBWWDhRTm03Q2hvc1d4Mm1LdG15K3VIS3VOV2xwazdRTzYxUjJiKzd4dStwNjdaa3VMaGhQelJtZ25abDExWGduNTZQeWFPWi85MUVoU1ZHTlIyaGh0M09mOHd6TTlPSm41K2pEdHFJU05wUWlGSFFtUU1qODgvY21rcUlUTnBaYkRRR3d1WXRqYUkxeEdKMllvUGdBNFFGMExFREVSUkFDeVhzRXpEZDVZVUc0ZEtuakJ5N3VzWnIrQ2pRV1huT0FLaHhkaEY1Vzhqa1FUbVFZU2Y0aVlYa0ROaEVmUVgxYnZHMU9jblR3MzhRTk4za2ZSL3RiRkROVlF2TzFnbmUvWW1CRExlNkxrZytJVHQ3bytwZnM5L0ltRlJMVkN6WUJmWC90RytxcVRaUzFCcjRmL3hpS3NwZXJrendaMTN6N2RuUjRVK2l0YmMxcW1mQlFPZXcrQmFpcmRPQ3ZseUpDTVBUbFJnVjZJZFdnSEFteXAzSjc2OGRYWWRldmVDdk9tVENiS25YNE1Kcmk1aUtHdEw2aU1UczFRYkFEWWdYUXRRRnRYNEVRUUIwalBhT2pVNWh5QjA5TkZjRmhCZ2p4QnZCV3lQSnVEZEdVTEMzbzB1aVBXZHBrU3JIZExvU2tnUnVYUjg1a3Bidy81ZXY3MjRnVlJZM3RZL01MODhQcHRnenBrWkgrTGhWTDFaVWNxVlNGdkJ1c3ZITHpjTi9vWlA4NU1iU3JMeTh3cmJRUlBQOU9QMmljaWNmNGJJYWhyZVRvVmxtMnRZYXF0YnZBTkd4cGd1WTNRVXZudm8vZDl4NmFPc0JvcVozTllodUg2c2JPM1MvNlRQSE16WGNWY2U3bUIwSCs3ZEZiNXFPU01XWCt5M2xiVVh5N1lkYlhQM3pKSEl3MlVrZUFNUUxxQ3crS3R2WklQam1aK2ZINTA1cHJYQm5xcmpMOXNXYmc3WW1VeTVEMWJjWWJ5TklqSVVJcWhIUEdpQTRBNXRiWlBjWUN5enlQYmo4QkVrQVJRWUdGa3A5M3lSVkVQcGZ2amFrTFlQQ2lkOVRMZ0VBUUNQSGVtVzRBUmdUUnJpRkhGZmpMTjBPbWdXdnZpYmhvdk42clJZSG5PYS9GUWQ3OUJJYjZlalY3MGN4V3k5dlRtRGFlTmdUTUc2RTlrbncxWThxSmRvbmRZZkZvNlRLZTBPUGV2dytyTHMxUGVQOXdyS1hOeDlHOXROcWtKR056TDQ1NUZHUDJmTno3L1h2WHkwdmRlNEZzbzRiQU16YUNabTNiTXRBbXMvM0ZHOU1LN0U1ZHZtRDJRWFdsVEpyMkowSGh6N29RS2FPTWNvRnlBZEFtSHhkTy9PazFsbTVOWGxBUlBERGkyZGROaHMrblIxU09QWG5pSkZpOHNVcHloREEyMGNxZ01Cb3hTRE9XSVJ3d0FBWWJpQU9XZFI3c1pBdjZaWkJDZ3RDa0Z0RkxPUXdWdGlMRXF3VjJNVkpoMXd1THNBVEkxMldaaU5tZkpROGdBdURrV3NMelhSSkxzaXJDYmR1NnlTY3Z6UDF5eVg2WHFNM3JXT3lPeWpxNy9MRFJtN3ZodWpwV0Z0RGI4ZDh2N0dZZXFiNVhWRU9TQjFNUWJ3WDFHelYrUk9OaVRiSzY5VTFWMkt2L2M3S2p4ZnN3RnRHYmd0Q1dUUHNoYWxMSlQxZXoxN0QveXB6N2RBM0xGQ3VrTEdUWlU1QzVKUDNEeEl0MW8rNEszTDhjc1dqV2JXWWNTRkVtcDdGNllGZERHTGEwa1FPTzFyV2xacFRWRTZkZmxyUks2eDAyMS9EOGxZWkV1WWdpWFlWUFZtUm5hSkFvTWdQNEtEa0xZUklBQlJBNW14RTdFdmZMMjJzVThsa0ZVUXovbm9SUFI5M1FSbGJtNXZLZEQzSzlnRnp6TnpnaWdINnVjVFkzVXhlK2gxM3NkdmpVV3JWNStxQmI5ak1UMUlodFBKVCt2UzlqL3dGNEhYQnNHQ0o0VHpCQms0bEJFR0tCREpaakdTcXhEUmRlQXZBWmdlekNDK0ZYZzdXSnowVVhRR3RDNVltSlVhbzBiWVhsTnZLTTNzdmI4b1ViZE5NNUxWaDJqaUtKb0dHNGFkKzdUSkpRMkRCQThUNWdoeU1TaGlCQkFod3EwTm03SEt6ZFovVDhSU1o3Qkl5TzhLL2NkdUZ6ZnNUYmFWTExqZUVqQzJGNGRlOUxwUDhIMHI1MlhxSUVqK25OZlcwZHF3d0I1OHdRemROSTRoQUhLSzZyYzMyMlNwKzh4eWFLYXF3NXZ6ZDFiZEsvYmM3TVhUdy96Zmt3T3krSERNRmJ2WGIzMmNGM1A4SmVtdmhFWjdDM2R6REZBbGpWbTZQQ3dzMCtRRFJEU0wvWlFDQmdjeGdRd0FVeEFBZ0hwS3dFSnhYQVRUQUFUd0FTZU1BTFlRNSt3RTQ0UEZ4UEFCTnFWQVBiUWRzV0ppMkVDbU1BVFJnQjc2Qk4yd3ZIaFlnS1lRTHNTK0IrbmFlZkhrU3NZb3dBQUFBQkpSVTVFcmtKZ2dnPT0=)
Sample Input2
1
2 8
Sample Output2
8 10
HINT
题解
此题巨坑无比。不要用$unsigned/cin$。
其次$a,b$是$g$的倍数的意思是“对于输入的$g$,$a,b$一定要是$g$的倍数”,而不是“对于所有$a,b$,输入的$g$满足$a,b$是$g$的倍数”(这种理解其实直接就是$g=1$,而输入并不保证$g=1$)。
我们有$n=l×g$。那么我们分开来讨论:
对于最小值,由均值不等式:$a+b≥2\sqrt{ab}=2\sqrt{n}=2\sqrt{lg}$(当且仅当$a=b$取等)。由于$a,b≥g$,显然可以取等,满足。
对于最大值,由于$a+b≥2\sqrt{lg}$,我们记$f(x)=a+b={n\over b}+b$,显然在$(0,\sqrt n]$是单调递减的。由于$b≥g$,故在$b=g$处取最大值。
综上最小值为$2\sqrt{lg}$,最大值为$l+g$。
精度问题
有人可能会写:
ans_min = (long long)sqrt((double)g × l);
这样会被卡精度,因为$double$大概只有$15$位$10$进制有效数字。只能得到$60$分。
解决方法是:
ans_min = (long long)sqrt(l / g) × g;
当然有人可能直接$long double$保平安了……
1 #include<set> 2 #include<map> 3 #include<ctime> 4 #include<cmath> 5 #include<queue> 6 #include<stack> 7 #include<cstdio> 8 #include<string> 9 #include<vector> 10 #include<cstring> 11 #include<cstdlib> 12 #include<iostream> 13 #include<algorithm> 14 #define LL long long 15 #define RE register 16 #define IL inline 17 using namespace std; 18 19 LL a,b; 20 int t; 21 22 int main() 23 { 24 cin>>t; 25 while (t--) 26 {scanf("%lld%lld",&a,&b); 27 printf("%lld %lld\n",2*(LL)sqrt(b/a)*a,a+b);} 28 return 0; 29 }