链接:https://ac.nowcoder.com/acm/contest/88392/A
来源:牛客网
小镇上有一家面包店,面包以 元的价格出售,加 元可以多加几块培根。小歪带着
元来到了面包店,他想知道自己能不能买到加培根的面包?
在一行上输入三个整数 ,,(1≤,,≤100) 代表面包的价格、培根的价格和小歪带的钱。
如果小歪能加到培根,在一行上输出 ;否则,直接输出 。
输入
3 1 5
输出
YES
面包加培根一共 4 元,小歪带了 5 元,他可以吃到培根!
输入
10 1 10
输出
NO
面包加培根一共 11 元,小歪带了 10 元,他吃不到培根 (⋟﹏⋞) 。
签到
#include
using namespace std;
int x,y,n;
int main(){
int i,j,k;
cin>>x>>y>>n;
if(x+y>n)printf("NO\n");
else printf("YES\n");
return 0;
}
链接:https://ac.nowcoder.com/acm/contest/88392/B
来源:牛客网
小 想要举办一个纸飞机大赛,他最新研制出的纸飞机需要 张纸才能折成。
为了制作纸飞机,他向班里的 个人要了一些纸,第 个人提供了 张纸给小 研究纸飞机。
放学了,小 终于折好了全部的纸飞机,现在有 个人留下来和小 一起飞纸飞机。 最多有多少个人能分到纸飞机。
第一行输入三个整数 ,,(1≤≤105; 0≤≤105; 1≤≤109) 代表班级同学数量、留下来的同学数量和叠一只纸飞机需要的纸的数量。
第二行输入 个整数 1,2,…,(1≤≤109) 代表每一个同学提供的纸的数量。
在一行上输出一个整数,代表最多有多少个人能分到纸飞机。
输入
3 2 5
1 2 4
输出
1
小 一共收集到 7 张纸,只可以叠一架纸飞机。
输入
6 3 4
1 1 4 5 1 4
输出
4
小 一共收集到 16 张纸,可以叠 4 架纸飞机,每个人都能分到纸飞机。
草率了,忘记小S自己也算一个,还有long long
#include
using namespace std;
#define int long long
int n,m,k,sum,a[100005];
signed main(){
int i,j;
cin>>n>>m>>k;
for(i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
}
cout<<min(sum/k,m+1)<<endl;
return 0;
}
链接:https://ac.nowcoder.com/acm/contest/88392/C
来源:牛客网
给定 组询问,76 每次询问都会给出一个正整数 ,你需要在区间 [1,109]中找到两个正整数 和 ,使得 ⊕= 。
⊕ 代表按位异或。
每个测试文件均包含多组测试数据。第一行输入一个整数 (1≤≤105) 代表数据组数,每组测试数据描述如下:
在一行上输入一个整数 ( 1≤≤109 )代表76 给出的初始数字。
对于每一组测试数据,在一行上输出两个正整数,代表你找到的两个值。
如果存在多个解决方案,您可以输出任意一个。
输入
3
1
5
4
输出
2 3
3 6
74 78
对于第一组测试数据,(10)2 xor (11)2 = (01)2 ;
对于第二组测试数据,(011)2xor (110)2=(101)2 。
我不知道正解哈,位运算这块我学的不好
我想到的就是在取出比当前的数大的2的倍数T,然后输出T和T+a,但是好像不对,125分拿75分。
大佬有知道原因的和我说下吧/(ㄒoㄒ)/~~
#include
using namespace std;
#define int long long
int T,a;
signed main(){
int i,j,k;
cin>>T;
while(T--){
cin>>a;
int x=1;while(x<=a)x*=2;
cout<<x<<" "<<x+a<<endl;
}
return 0;
}
然后这是正解:
#include
using namespace std;
#define int long long
int T,n;
int lowbit(int x){
return x&(-x);
}
signed main<