参考网站
题目10 11 12 13
题目10 商业活动
题目描述
小明每天的话费是1元,运营商做活动,手机每充值K元就可以获赠1元话费,一开始小明充值M元,问最多可以用多少天? 注意赠送的话费也可以参与到奖励规则中
输入描述
输入包括多个测试实例。每个测试实例包括2个整数M,K(2<=k<=M<=1000)。M=0,K=0代表输入结束。
输出描述
对于每个测试实例输出一个整数,表示M元可以用的天数。
输入示例
2 2
4 3
13 3
0 0
输出示例
3
5
19
提示信息
注意第三组数据「13 3」结果为什么是19呢, 13/3=4,获得4元奖励。 13%3=1,还剩下1元,4+1=5,5元继续参加奖励规则。 5/3=1,获得1元奖励。 5%3=2,剩下2元,1+2=3,3元继续参与奖励规则。 3/3=1,获得1元奖励。 3%3=0,剩下0元,1+0=1。 1元不能参与剩下奖励。所以一共可以使用的天数是 13+4+1+1=19
#include<iostream>
using namespace std;
int main(){
int m,k;
string str;
while(cin>>m>>k){
// cout<<m<<endl;
// cout<<k<<endl;
if(m==0&&k==0){
break;
}
int left=m;
int res=m;
while(left>=k){
res+=(left/k);
left=left%k+left/k;
}
cout<<res<<endl;
}
return 0;
}
11.
11. 共同祖先
时间限制:1.000S 空间限制:32MB
题目描述
小明发现和小宇有共同祖先!现在小明想知道小宇是他的长辈,晚辈,还是兄弟。
输入描述
输入包含多组测试数据。每组首先输入一个整数N(N<=10),接下来N行,每行输入两个整数a和b,表示a的父亲是b(1<=a,b<=20)。小明的编号为1,小宇的编号为2。
输入数据保证每个人只有一个父亲。
输出描述
对于每组输入,如果小宇是小明的晚辈,则输出“You are my younger”,如果小宇是小明的长辈,则输出“You are my elder”,如果是同辈则输出“You are my brother”。
输入示例
5
1 3
2 4
3 5
4 6
5 6
6
1 3
2 4
3 5
4 6
5 7
6 7
输出示例
You are my elder
You are my brother
#include<iostream>
using namespace std;
#include<vector>
int main(){
int n;
while(cin>>n){
// cout<<n<<endl;
vector<int> relations(30,0);
int a;
int b;
for(int i=0;i<n;i++){
cin>>a>>b;
relations[a]=b;
}
int count_1=0;
int count_2=0;
a=1,b=2;
while(relations[a]!=0){
a=relations[a];
count_1++;
}
while(relations[b]!=0){
b=relations[b];
count_2++;
}
// cout<<"count_1=="<<count_1;
// cout<<"count_2=="<<count_2;
if(count_2==count_1)
cout<<"You are my brother"<<endl;
else if(count_1>count_2)
cout<<"You are my elder"<<endl;
else
cout<<"You are my younger"<<endl;
}
return 0;
}
12. 打印数字图形
时间限制:1.000S 空间限制:32MB
题目描述
先要求你从键盘输入一个整数n(1<=n<=9),打印出指定的数字图形。
输入描述
输入包含多组测试数据。每组输入一个整数n(1<=n<=9)。
输出描述
对于每组输入,输出指定的数字图形。
注意:每行最后一个数字后没有任何字符。
输入示例
5
输出示例
1
121
12321
1234321
123454321
1234321
12321
121
1
#include <iostream>
using namespace std;
void printFigure(int n) {
// 构建上半部分包括中间行
for (int i = 1; i <= n; i++) {
// 打印前置空格
for (int j = 1; j <= n - i; j++) {
cout << " ";
}
// 打印左半边数字包括中位数
for (int j = 1; j <= i; j++) {
cout << j;
}
// 打印右半边数字,不包括中位数
for (int j = i - 1; j >= 1; j--) {
cout << j;
}
// 换行
cout << endl;
}
// 构建下半部分,不包括中间行
for (int i = n - 1; i >= 1; i--) {
// 打印前置空格
for (int j = 1; j <= n - i; j++) {
cout << " ";
}
// 打印左半边数字包括中位数
for (int j = 1; j <= i; j++) {
cout << j;
}
// 打印右半边数字,不包括中位数
for (int j = i - 1; j >= 1; j--) {
cout << j;
}
// 换行
cout << endl;
}
}
int main() {
int number;
while (cin >> number) {
printFigure(number);
}
return 0;
}
13. 镂空三角形
时间限制:1.000S 空间限制:32MB
题目描述
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
输入描述
每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
输出描述
每个样板三角形之间应空上一行,三角形的中间为空。行末没有多余的空格。每条结果后需要再多输出一个空行。
输入示例
X 2
A 7
@
输出示例
X
XXX
A
A A
A A
A A
A A
A A
AAAAAAAAAAAAA
#include<iostream>
#include<vector>
using namespace std;
void printFig(string c, int a)
{
if (a == 1)
{
cout << c;
cout<<endl;
return;
}
if (a == 2)
{
cout << " " << c << endl;
cout << c << c << c << endl;
cout<<endl;
return;
}
int n = a * 2 - 1;
std::vector<vector<string>> arr(a, vector<string>(n, " "));
arr[0][a - 1] = c;
for (int i = 1; i <= a - 2; i++)
{
arr[i][a - i - 1] = c;
arr[i][a + i - 1] = c;
}
for (int i = 0; i < n; i++)
{
arr[a - 1][i] = c;
}
for (auto it : arr)
{
for (auto i : it)
{
cout << i;
}
cout << endl;
}
cout<<endl;
}
int main(){
string c;
int a;
while(cin>>c>>a){
if(c=="@")
break;
// cout<<a<<endl;
printFig(c,a);
}
return 0;
}