文章目录
2021、发工资
财务处的小胡老师最近就在考虑一个问题:如果每个老师的工资额都知道,最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?
这里假设老师的工资都是正整数,单位元,人民币一共有100元、50元、10元、5元、2元和1元六种。
Input
输入数据包含多个测试实例,每个测试实例的第一行是一个整数n(n<100),表示老师的人数,然后是n个老师的工资。
n=0表示输入的结束,不做处理。
Output
对于每个测试实例输出一个整数x,表示至少需要准备的人民币张数。每个输出占一行。
Sample Input
3
1 2 3
0
Sample Output
4
Code
给老师发工资,老师的工资都是正整数,人民币一共有100元、50元、10元、5元、2元和1元六种。最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?理解题意,不难
/*
老师的工资都是正整数,人民币一共有100元、50元、10元、5元、2元和1元六种。
最少需要准备多少张人民币,才能在给每位老师发工资的时候都不用老师找零呢?
*/
#include<iostream>
using namespace std;
int main(){
int n,salary,sum;//老师人数[1,99]
while(cin>>n){
if(n==0) return 0;
sum=0;
for(int i=0;i<n;i++){
cin>>salary;
while(salary>0){
if(salary>=100){
sum=sum+salary/100;
salary=salary%100;
}
else if(salary>=50){
sum=sum+salary/50;
salary=salary%50;
}
else if(salary>=10){
sum=sum+salary/10;
salary=salary%10;
}
else if(salary>=5){
sum=sum+salary/5;
salary=salary%5;
}
else if(salary>=2){
sum=sum+salary/2;
salary=salary%2;
}
else{
sum=sum+salary;
salary=0;
}
}//while循环
}//for循环
cout<<sum<<endl;
}
return 0;
}
2022、在二维数组中,寻找绝对值最大的数
输入m行n列的数据,输出其中绝对值最大的数所在的行数,列数和数据
如果有多个绝对值相等的数值,则输出行号最小的那个
若行号也相同,则输出列数最小的那个
Input
输入数据有多组,每组的第一行是两个整数m和n,表示应聘MM的总共的行列数,然后是m行整数,每行有n个,m和n的定义见题目的描述。
Output
对于每组输入数据,输出三个整数x,y和s,分别表示选中的MM的行号、列号和分数。
note:行号和列号从一开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。
Sample Input
2 3
1 4 -3
-7 3 0
Sample Output
2 1 -7
Code
对二维数组排序,不难
/*
输入m行n列的数据,输出其中绝对值最大的数所在的行数,列数和数据
如果有多个绝对值相等的数值,则输出行号最小的那个
若行号也相同,则输出列数最小的那个
*/
#include<iostream>
#include<cmath>
using namespace std;
int scoreArray[100][100];
int main(){
int m,n;//m行n列
while(cin>>m>>n){
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>scoreArray[i][j];
}
}
//寻找scoreArray[]数组中绝对值最大的数
int maxscore=scoreArray[0][0],k,s;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(abs(maxscore)<abs(scoreArray[i][j])){
maxscore=scoreArray[i][j];
k=i+1;
s=j