.
输出格式: 2
(2)参考代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int m,c;
cin>>m>>c;
int p=c-m;
int n=0;
while(p>0){
if(p>=50) p-=50;
else if(p>=20) p-=20;
else if(p>=10) p-=10;
else if(p>=5) p-=5;
else if(p>=2) p-=2;
else p--;
n++;
}
cout<<n;
return 0;
}
4. MT1354 购物
(1)题目描述
人民币面值有:1、2、5分,1、2、5角,1、2、5、10、20、50元。编写函数change(m,c);其中m为商品价格,c为顾客付款。函数输出应给顾客找零的各种面值人民币的总张数,且总数之和最少。
不考虑负数或者其他非法输入等特殊情况。
格式
输入格式: 输入商品价格,顾客付款,均为实型,单位为元,空格分隔。
.
输出格式: 输出为整型
样例1
输入格式: 7 10
.
输出格式: 2
(2)参考代码
#include<bits/stdc++.h>
using namespace std;
int change(int m,int c){
int remain=c-m;
int sum=0;
int a[]={1,2,5,10,20,50,100,200,500,1000,2000,5000};
for(int i=11;i>=0;i--){
int cnt=remain/a[i];
sum+=cnt;
remain -= cnt\*a[i];
}
return sum;
}
int main( )
{
double m,c;
int ma,ca;
scanf("%lf %lf",&m,&c);
ma=m\*100,ca=c\*100;
printf("%d",change(ma, ca));
return 0;
}
5. MT1355 稀疏二进制
(1)题目描述
输入正整数N,编写函数判断它的二进制形式是不是一个稀疏二进制,是就输出,如果不是就查找其下一个数,直到找到稀疏二进制数并输出。稀疏二进制数是二进制表示形式不包含任何连续1的数。
格式
输入格式: 输入正整数N
.
输出格式:输出整型
样例1
输入格式: 3
.
输出格式: 4
(2)参考代码
#include<bits/stdc++.h>
using namespace std;
bool getSparseBinary(int x){
int temp=0;
bool flag = false;
while(x){
temp=x%2;
if(temp==1&&!flag) flag=true;
else if(temp==0) flag=false;
else return false;
x/=2;
}
return true;
}
int main( )
{
int n;
cin>>n;
while(1){
if(getSparseBinary(n)){
cout<<n<<endl;
break;
}
n++;
}
return 0;
}
6. MT1356 二进制回文
(1)题目描述
输入正整数N,编写一个函数,判断它的二进制表示形式是否为回文输出YES或者NO。
格式
输入格式: 输入正整数N
.
输出格式: 输出YES或者NO
样例1
输入格式: 17
.
输出格式: YES
(2)参考代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n;
string s;
cin>>n;
while(n){
s+=n%2;
n/=2;
}
int len = s.size();
for(int i=0,j=len-1;i<j;i++,j--){
if(s[i]!=s[j]){
cout<<"NO"<<endl;
return 0;
}
}
cout<<"YES"<<endl;
return 0;
}
7. MT1357 高低变换
(1)题目描述
编写函数,计算将unsigned char型n的二进制表示形式的低四位和高四位交换后的结果。在主函数中输入数据调用函数输出结果。
格式
输入格式: 输入为字符型
.
输出格式: 输出为字符型
样例1
输入格式: T
.
输出格式: E
(2)参考代码
#include<bits/stdc++.h>
using namespace std;
unsigned char change(unsigned char c){
return (c>>4) | (c<<4);
}
int main( )
{
unsigned char ch;
cin>>ch;
cout<<change(ch)<<endl;
return 0;
}
8. MT1358 第k位
(1)题目描述
编写函数int getbit(int n,int k);求出n的二进制表示形式的从右边开始的第k位(从1开始计数)。在主函数中输入数据并调用该函数输出结果。
格式
输入格式: 输入n, k为正整数,空格分隔。
.
输出格式: 输出位整型
样例1
输入格式: 1 3
.
输出格式: 0
(2)参考代码
#include<bits/stdc++.h>
using namespace std;
int dp[10000],cnt=0;
int getbit(int n,int k){
while(n){
dp[++cnt] = n%2;
n/=2;
}
return dp[cnt-k+1];
}
int main( )
{
int n,m;
cin>>n>>m;
cout<<getbit(n,m)<<endl;
return 0;
}
9. MT1359 循环移位
(1)题目描述
编写函数实现左右循环移位。函数原型为unsigned move(unsigned value,intn);其中value为要循环移位的数,n为移位的位数。如果n<0表示左移,n>0表示右移,n=O表示不移位。在主函数中输入数据并调用该函数得到结果并在主函数输出。(在4位2进制表示中进行位移,且0<value<15)
格式
输入格式: 输入value, n为整型,空格分隔。
.
输出格式: 输出为整型
样例1
输入格式: 9 1
.
输出格式: 12
(2)参考代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int v,n,t;
bool f=false;
cin>>v>>n;
if(n==0) cout<<v;
else{
if(n>0) f=true;
if(f){
while(n--){
t=v&1;
v=v>>1;
v+=t<<3;
}
}else{
n=-n;
while(n--){
t=v&8;
t=t>>3;
v=v<<1;
v=v&15;
v+=t;
}
}
cout<<v;
}
return 0;
}
10. MT1360 左右函数
(1)题目描述
输入一个字符串(至少3个字符),编写2个函数,函数名分别为left,right,他们分别复制字符串最左边或者最右边3个字符到新数组中并输出。
格式
输入格式: 输入字符串
.
输出格式: 第一行输出最左边3个字符,第二行输出最右边3个字符。
样例1
输入格式: Coding is fun
.
输出格