寒假的牛客训练赛1补题
寒假我太摸魚了
牛牛最近做了這么一道題:
"對(duì)于一給定的?n(1≤n≤109)n(1\leq n\leq 10^{9})n(1≤n≤109),計(jì)算?(n)\phi(n)?(n), 之中??(x)\phi(x)?(x)是滿足1≤y≤x1\leq y \leq x1≤y≤x?且?gcd(x,y)=1gcd(x,y)=1gcd(x,y)=1的yyy的個(gè)數(shù)。例如:??(6)=2\phi(6)=2?(6)=2、?(5)=4\phi(5)=4?(5)=4."
牛牛一眼看出這就是歐拉函數(shù),于是立刻用嘴巴解決了這道題。
牛牛意猶未盡,于是他又給你出了一道題。對(duì)于一個(gè)正整數(shù)?xxx,牛牛定義H(x)H(x)H(x)?:
H(x)=?(x)xH(x)=\frac{\phi(x)}{x}H(x)=x?(x)?
牛牛還規(guī)定,該函數(shù)的定義域?yàn)槌?11的所有正整數(shù)。
于是,牛牛給出了一個(gè)整數(shù)nnn,想要你回答兩個(gè)關(guān)于H(x)H(x)H(x)的問(wèn)題:
1、 回答一個(gè)?x0∈[2,n]x_{0}\in [2,n]x0?∈[2,n],使得?H(x0)H(x_{0})H(x0?)?取到?H(x)H(x)H(x)?在?[2,n][2,n][2,n]的最小值。若存在多個(gè)這樣的x0x_0x0?,輸出最小的一個(gè)。
2、 回答一個(gè)?x0∈[2,n]x_{0}\in [2,n]x0?∈[2,n],使得?H(x0)H(x_{0})H(x0?)?取到?H(x)H(x)H(x)?在?[2,n][2,n][2,n]的最大值。若存在多個(gè)這樣的x0x_0x0?,輸出最大的一個(gè)。
輸入描述:
第一行為一個(gè)整數(shù)T(1≤T≤100)T(1\leq T \leq 100)T(1≤T≤100),表示測(cè)試組數(shù)。
接下來(lái)的TTT行,每行包括一個(gè)整數(shù)n(1≤n≤109)n(1\leq n \leq 10^{9})n(1≤n≤109),牛牛給出的整數(shù)。
輸出描述:
對(duì)于每個(gè)測(cè)試用例,輸出兩個(gè)空格分割的整數(shù),依次為你對(duì)牛牛兩個(gè)問(wèn)題的答案。
特別的,若n=1n=1n=1,請(qǐng)輸出?1-1?1表示H(1)H(1)H(1)沒(méi)有定義。
示例1
輸入
復(fù)制3 2 5 1
3 2 5 1輸出
復(fù)制2 2 2 5 -1
2 2 2 5 -1說(shuō)明
第二組樣例中,H(1)H(1)H(1)未定義,H(2)=12,H(3)=23,H(4)=24,H(5)=45H(2)=\frac{1}{2},H(3)=\frac{2}{3},H(4)=\frac{2}{4},H(5)=\frac{4}{5}H(2)=21?,H(3)=32?,H(4)=42?,H(5)=54?。? 問(wèn)題一的答案為2、2×3、2×3×5、2×3×5×7......這些前若干個(gè)素 數(shù)的積中,最大的且不超過(guò)n的那一個(gè),如n=233,則答案為 2×3×5×7=210。
?? 問(wèn)題二的答案為[2,n]中最大的素?cái)?shù)。
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef double db; ll prime[20]= {0,2,3,5,7,11,13,17,19,23,29,31,37,41}; ll t, n; inline bool isP(ll x) {if(x<=3) return true;for(ll i=2; i*i<=n; i++){if(n%i==0) return false;}return true; } int main () {cin>>t;while(t--){cin>>n;if(n==1){cout<<-1<<endl;continue;}ll now=1,i=1;while(now*prime[i]<=n){now*=prime[i];i++;}printf("%lld ",now);while(!isP(n)){n--;}printf("%lld\n",n);}return 0; }總結(jié)
以上是生活随笔為你收集整理的寒假的牛客训练赛1补题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jquery导出并下载报表的方式
- 下一篇: 搭建管理驾驶舱--以结果倒逼过程管理