牛客小白月赛32
A.拼三角
题意:给你六根小木棍,问是否能组成两个三角形。
思路:,总共就只有十种可能,列举全部,判断是否构成三角形。
代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=10010; int a[10]; int main() { int n; cin>>n; int flag; while(n--){ for(int i=1;i<=6;i++) cin>>a[i]; sort(a+1,a+7); flag=0; if(a[1]+a[2]>a[3]&&a[4]+a[5]>a[6]) flag=1; if(a[1]+a[2]>a[4]&&a[3]+a[5]>a[6]) flag=1; if(a[1]+a[2]>a[5]&&a[4]+a[3]>a[6]) flag=1; if(a[1]+a[2]>a[6]&&a[4]+a[3]>a[5]) flag=1; if(a[1]+a[3]>a[4]&&a[2]+a[5]>a[6]) flag=1; if(a[1]+a[3]>a[5]&&a[2]+a[4]>a[6]) flag=1; if(a[1]+a[3]>a[6]&&a[2]+a[4]>a[5]) flag=1; if(a[1]+a[4]>a[5]&&a[2]+a[3]>a[6]) flag=1; if(a[1]+a[4]>a[6]&&a[2]+a[3]>a[5]) flag=1; if(a[1]+a[5]>a[6]&&a[2]+a[3]>a[4]) flag=1; if(flag) puts("Yes"); else puts("No"); } }
C.消除整数
题目:
给出一个正整数H,从1开始减,第一次必须减1,每次减的数字都必须和上一次相同或者是上一次的两倍,请问最少需要几次能把H恰好减到0。
思路:
从1开始减(设i为1),后面只能减 i 或者2* i,也就是说只能减2的倍数,那么如果一开始n为双数就得减两次i=1(题目要求第一次必须减1,为了确保n能到0所以需要保证n是双数),否则减一次。确保n为双数以后开始循环,如果能被i的两倍整除,那么就i* 2,否则就减自身i不变。用num作为计数器就好了。