JZOJ 5376. 【NOIP2017提高A组模拟9.19】Candy
生活随笔
收集整理的這篇文章主要介紹了
JZOJ 5376. 【NOIP2017提高A组模拟9.19】Candy
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
Input
Output
Sample Input
2
2 2 2
4 6 8
Sample Output
-1
1
Data Constraint
Solution
顯然,這三個數在變換中只會越來越接近彼此(即差值越來越小)。
那么設開始時三個數分別為 a,b,c(a<b<c) ,那么差值為:x=b?a,y=c?b
當 x 或 y 其中一個為奇數,說明 a,b,c 中出現了奇數,則退出循環。
由于差值的變化都是每次除以 2 ,所以每次將 x,y 都除以 2 ,直到有奇數。
這樣每有一個 2 因子,則可以“分享”一次,且最多不會超過 logN 次。
Code
#include<cstdio> #include<algorithm> using namespace std; inline long long read() {long long X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w; } int main() {int T=read();while(T--){long long a=read(),b=read(),c=read(),ans=0;if(a==b && b==c){printf("-1\n");continue;}if(a&1){printf("0\n");continue;}if(a>b) swap(a,b);if(a>c) swap(a,c);if(b>c) swap(b,c);long long x=b-a,y=c-b;for(int i=0;i<65;i++){if(x&1 || y&1){printf("%d\n",i);break;}x>>=1;y>>=1;}}return 0; } 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的JZOJ 5376. 【NOIP2017提高A组模拟9.19】Candy的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JZOJ 5373. 【NOIP2017
- 下一篇: JZOJ 5377. 【NOIP2017