杭电OJ第一阶段英文题试水:1720、1062、2104、1064、2734、1170、1197、2629

1064 Financial Management
一开始居然把12写成n

#include <iostream>
using namespace std;

int main()
{
    int n = 12;
    double sum = 0;
    double salary;
    while (n--) {
        cin >> salary;
        sum += salary;
    }
    printf("%.2lf\n",sum/12);
    return 0;
}

1062 Text Reverse
就是输入一行字符串,然后翻转这一个行中被空格分隔的单词。最后再把处理过的该行字符串输出即可。

先用begin变量标记一个起点,然后遍历一遍字符串,遇到空格就保存空格前面一位到begin位置(顺序不能错)的所有字符,然后再保存一个空格,并且更新begin的位置。

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main() {
	int t;
	cin>>t;
	getchar();
	while(t--) {
		string a,ans;
		getline(cin,a);
		int begin = 0,len = a.size() - 1;
		ans = "";
		for(int i = 0;i <= len;i++) {
			//判断最后一位是否为空格还是字符
			if(i == len&&a[i] != ' ') {
				for(int j = i;j >= begin;j--) ans += a[j];
			}
			else if(a[i] == ' '||(i == len&&a[i] == ' ')) {
				for(int j = i - 1;j >= begin;j--)
					ans += a[j];
				ans += ' ';
				begin = i + 1;//更新起点
			}
		}
		cout<<ans<<endl;
	} 
	return 0;
} 
#include <stdio.h>
#include <string.h>
int main()
{
    int n;
    char s[1001];
    int i, j;
    while (scanf("%d",&n)!=EOF) {
        getchar();
        while (n--) {
            gets(s);
            int len = strlen(s);
            int flag = 0;
            for (i = 0; i < len; ++i) {
                if (s[i] == ' ') {
                    for (j = i - 1; j >= flag; --j) {
                        printf("%c",s[j]);
                    }
                    printf(" ");
                    flag = i + 1;
                }
            }
            for (j = i - 1; j >= flag; --j) {
                printf("%c",s[j]);
            }
            printf("\n");
        }
    }
    return 0;
}

2104 hide handkerchief
n个人围成一个圈玩找手帕游戏,手帕藏在某一个人的箱子里,Haha来找,每一次他都会跳过m-1个人。问Haha是不是一定能找到手帕。
其实就是看盒子数和步数,走一圈能不能会到原点,发现规律这二个数是互质就是最大公约数为1

#include <iostream>
using namespace std;
int gcd(int n,int m) {
    if (n < m) {
        int temp = m;
        m = n;
        n = temp;
    }

    while (m != 0) {
        int num = n % m;
        n = m;
        m = num;
    }
    return n;
}
int main()
{
    int n, m;
    while (cin >> n >> m,n!=-1,m!=-1) {
        if (gcd(n,m) == 1) {
           cout << "YES" << endl;
        } else {
            cout << "POOR Haha" << endl;
        }
    }
    return 0;
}

2734 Quicksum

#include <iostream>
using namespace std;

int main()
{
    string input_str;
    while (getline(cin,input_str),input_str[0]!='#') {
        int length = input_str.size();
        int sum = 0;
        for (int i = 0; i < length; ++i) {
            if (input_str[i] == ' ') {
                continue;
            }
            sum += (i + 1) * (input_str[i] - 64);//(input_str[i]-'A'+1)
        }
        cout << sum << endl;
    }
    return 0;
}

1170 Balloon Comes!

#include <stdio.h>

int main(){
	int T;
	int A,B;
	char C;
	float result;
	scanf("%d",&T);
	getchar();
	while(T--){
		scanf("%c%d%d",&C,&A,&B);
		getchar();
		switch(C){
		case '+':result = A+B;break;
		case '-':result = A-B;break;
		case '*':result = A*B;break;
		case '/':result = (double)A/B;break;
		}
		if(C=='/' && A%B!=0){
			printf("%.2f\n",result);
		}else{
			printf("%d\n",(int)result);
		}
	}
	return 0;
}

1197 Specialized Four-Digit Numbers

#include <iostream>
using namespace std;
int tar(int n,int num) {
    int sum = 0;
    while (num >= n) {
        sum += num % n;
        num /= n;
    }
    return sum + num;
}
void judge(int num) {
    int shi, shier , shiliu;
    shi = tar(10,num);
    shier = tar(12,num);
    shiliu = tar(16,num);
    if (shi == shier && shi == shiliu) {
        cout << num << endl;
    }
    return;
}

int main()
{
    for (int i = 2992; i <= 9999; ++i) {
        judge(i);
    }
    return 0;
}
#include <iostream>
using namespace std;

int main()
{
    for (int i = 2992; i <= 9999; ++i) {
        int sum10 = 0, sum12 = 0, sum16 = 0;
        int r = i;
        while (r) {
            sum10 += r % 10;
            r /= 10;
        }
        r = i;
        while (r) {
            sum12 += r % 12;
            r /= 12;
        }
        r = i;
        while (r) {
            sum16 += r % 16;
            r /= 16;
        }
        if (sum10 == sum12 && sum10 == sum16) {
            cout << i << endl;
        }
    }
    return 0;
}

2629 Identity Card

 int n;
    string input_str,place;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>input_str;
        if(input_str.substr(0,2)=="33")
            place="Zhejiang";
        else if(input_str.substr(0,2)=="11")
            place="Beijing";
        else if(input_str.substr(0,2)=="71")
            place="Taiwan";
        else if(input_str.substr(0,2)=="81")
            place="Hong Kong";
        else if(input_str.substr(0,2)=="82")
            place="Macao";
        else if(input_str.substr(0,2)=="54")
            place="Tibet";
        else if(input_str.substr(0,2)=="21")
            place="Liaoning";
        else if(input_str.substr(0,2)=="31")
            place="Shanghai";

        cout <<"He/She is from"<<" "<< place
             << ",and his/her birthday is on"<<" "<<input_str.substr(10,2)<<","
             <<input_str.substr(12,2)<<","<<input_str.substr(6,4)<<" "
             <<"based on the table."<<endl;
    }
#include <iostream>
using namespace std;
#include <map>

map<int,string> m;
int main()
{
    m[33] = "Zhejiang";
    m[11] = "Beijing";
    m[71] = "Taiwan";
    m[81] = "Hong Kong";
    m[82] = "Macao";
    m[54] = "Tibet";
    m[21] = "Liaoning";
    m[31] = "Shanghai";
    int n;
    cin >> n;
    while (n--) {
        string id;
        cin >> id;
        int region = (id[0] - '0') * 10 + (id[1] - '0');//把前二个字符转成数字
        printf("He/She is from %s,and his/her birthday is on ", m[region].c_str());
        printf("%c%c,%c%c,%c%c%c%c", id[10], id[11], id[12], id[13], id[6], id[7], id[8], id[9]);
        printf(" based on the table.\n");
    }

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值