A:人民币支付
#include<iostream>
using namespace std;
int main()
{
int n, a[6] = {100, 50, 20, 10, 5, 1};
cin >> n;
for(int i = 0; i < 6; ++i)
{
cout << n/a[i] << endl;
n %= a[i];
}
return 0;
}
暴力必超时
#include<iostream>
using namespace std;
int main(){
int sum;cin>>sum;
int a=100,b=50,c=20,d=10,e=5,f=1;
for(int i=sum/100;i>=0;i--){
for(int j=sum/50;j>=0;j--){
for(int m=sum/20;m>=0;m--){
for(int n=sum/10;n>=0;n--){
for(int p=sum/5;p>=0;p--){
for(int q=sum;q>=0;q--){
if(a*i+b*j+c*m+d*n+e*p+f*q==sum){
cout<<i<<endl<<j<<endl<<m<<endl<<n<<endl<<p<<endl<<q<<endl;
goto space;
}
continue;
}
}
}
}
}
}
space:
return 0;
}
B:排队游戏
利用栈的思想,利用一个(模仿栈)的数组,遇到男孩则入栈(即加入数组),记录当前位置(更新相对下标、绝对下表);
而遇到女孩,则出栈(男孩相对下标--),输出女孩与男孩的绝对位置。
2014计算机学科夏令营上机考试 B:排队游戏文章来源:https://www.toymoban.com/news/detail-522777.html
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int main() {
char a[55];//a[end]只存储男孩的绝对下标num
char boy,tmp;
int end=0;//end:男孩在当前序列中的相对下标(牵手离开后序列中第几个)
int num=0;//num:男孩在整个序列中的绝对下标
scanf("%c",&boy);//先输入的字符是男孩
a[0]=num;
while(scanf("%c",&tmp)!=EOF){
if(tmp==boy){
end++;
num++;
a[end]=num;//记录男孩下标,存到a数组里
}
else{
num++;//只++num,不++end; 此时num是女孩下标
printf("%d %d\n",a[end],num);//
end--;//两人成功牵手,男孩要回退1个
if(end<0){
return 0;
}
}
}
return 0;
}
C:取石子游戏
找规律&……#¥%……&*()*&……%¥文章来源地址https://www.toymoban.com/news/detail-522777.html
#include <iostream>
#define N 100+5
using namespace std;
const int idata=10+5;
int change[idata][4]={ {1,0}, {-1,0}, {0,1}, {0,-1} };
bool judge[idata][idata];
char ch[idata][idata];
int cnt;
int main(){
int a,b;
int temp;
int flag;
while(scanf("%d%d",&a,&b)!=EOF&&a&&b){
flag=1;
if(a<b){
temp=a;
a=b;
b=temp;
}
if(a/b>=2){
cout<<"win"<<endl;
continue;
}
while(a/b==1){
a-=b;
temp=b;
b=a;
a=temp;
flag=-flag;
}
if(flag==1) cout<<"win"<<endl;
else cout<<"lose"<<endl;
}
return 0;
}
H:Binary Tree
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int maxn = 30;
int main(){
int t,cnt = 0;
cin>>t;
while(t--){
int a,b;
cnt++;
cin>>a>>b;
ll left = 0,right = 0;
while(a != 1&&b != 1){
if(a >b){
left += a / b;
a = a % b;
}
else{
right += b / a;
b = b % a;
}
}
if(a == 1) right += b - 1;
if(b == 1){
left += a - 1;
cout<<"Scenario #"<<cnt<<":"<<endl;
cout<<left<<' '<<right<<endl<<endl;
}
return 0;
}
到了这里,关于北京大学2014计算机学科夏令营上机考试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!