标签:main int 新生 cnt5 补题 cnt1 printf include 理工
https://ac.nowcoder.com/acm/contest/25080
第一题太简单略过
第二题 贪心:注意两种情况,5元纸币够用和5元纸币不够用;
if从句搞定
#include <stdio.h>
int main(){
long long int n,a,cnt5,cnt1;
scanf("%d %d",&n,&a);
cnt5 = a / 5;
if(cnt5 > n){
cnt5 = n;
cnt1 = a-n*5;
}else{
cnt1 = a-cnt5*5;
}
printf("%d %d",cnt5,cnt1);
return 0;
}
第三题 简单博弈(课上讲过) 直接上(k+1)的倍数
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
if(n%4==0){
printf("bob");
}else{
printf("kiki");
}
return 0;
}
第四题 暴力枚举
https://ac.nowcoder.com/acm/contest/25080求余通过比较找最大值
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,r,l;
int ans=0;
cin >> n >> l >> r;
for(int i=l;i<=r;i++){
ans=max(ans,i%n);
}
cout << ans;
return 0;
}
第五题 位运算巧用(附其他做法)
注意题目是 求二的正整数次幂之和;
奇数直接输出-1,不符合要求;
剩下的数由二进制形式找到第一个“1”所在的位置,前面补零
#include <bits/stdc++.h>
using namespace std;
int main(){
int x,i;
cin >> x;
if(x%2!=0){
cout<<-1<<endl;
}else{
for(i=31;i>=1;i--){
if(x>>i&1){
cout<<(1<<i)<<" "; //输出2的i次方;
}
}
}
return 0;
}
//x&1代表最低位的值(最右位的值)
//假设:x=10==(1010)2
//那么 x&1 == 0
#include<stdio.h>
int main(void){
int n ;
int i ;
scanf("%d" , &n);
if (n % 2 == 1) printf("-1");
if(n % 2 == 0){
for(i = 2 ; n > 0 ; i = i * 2){
if(i > n){
i = i / 2;
n = n - i;
printf("%d " , i);
i = 2;
}
}
}
return 0 ;
}
标签:main,int,新生,cnt5,补题,cnt1,printf,include,理工 来源: https://blog.csdn.net/m0_61740661/article/details/121620057
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。