PAT(B) 101-111-1-2014-03-01

1.个位数统计:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<set>
#include<vector>
#include<map>
#include<math.h>
#include<queue>
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
char s[1005];
int  n, a[10];
int main(){
	while(gets(s)) {
		memset(a, 0, sizeof a);
		for(int i = 0; s[i]; i++)
			a[s[i]-'0']++;
		for(int i = 0; i < 10; i++)
			if(a[i])
				printf("%d:%d
",i,a[i]);
	}
	return 0;
}

2. D进制的A+B (20)

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<set>
#include<vector>
#include<map>
#include<math.h>
#include<queue>
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define ll long long
int D[1000];
ll  a,b,d;
int main(){
	while(~scanf("%lld %lld %lld",&a,&b,&d)) {
		ll c = a+b;
		int top = 0;
		while(c) {
			D[top++] = c%d;
			c/=(ll)d;
		}
		if(top==0)D[top++] = 0;
		for(int i = top-1; i >= 0; i--)	
			printf("%d", D[i]);
		puts("");
	}
	return 0;
}

3.组个最小数 (20)

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<set>
#include<vector>
#include<map>
#include<math.h>
#include<queue>
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int a[10];
int main(){
	while(~scanf("%d",&a[0])) {
		bool fir = false;
		for(int i = 1; i < 10; i++) { 
			scanf("%d",&a[i]);
			if(a[i] && fir==false) {
				a[i]--;
				fir = true;
				printf("%d",i);
			}
		}
		for(int i = 0; i < 10; i++)
			while(a[i]--)printf("%d",i);
		puts("");
	}
	return 0;
}

4.科学计数法 (20)

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<set>
#include<vector>
#include<map>
#include<math.h>
#include<queue>
#include<string>
#include<stdlib.h>
#include<algorithm>
using namespace std;
char s[10005];
vector<int>G;
void put(){for(int i = 0; i < G.size(); i++)printf("%d",G[i]);}
int main(){
	while(gets(s)) {
		G.clear();
		if(s[0]=='-')printf("-");
		G.push_back(s[1]-'0');
		int i = 3;
		for(; s[i]!='E'; i++) G.push_back(s[i]-'0');
		int add = s[++i]=='-'? 1 : -1;
		int num = 0;
		for(i++; s[i]; i++) num = num*10 + s[i]-'0';
		num *= add;
		num += (G.size()-1);
		if(num>=(int)G.size()) {
			printf("0.");
			num--;
			while(num>=G.size())printf("0"), num--;
			for(i = 0; i < G.size(); i++)
				printf("%d",G[i]);
		}
		else {
			for(i = 0; i < G.size(); i++) {
				if(num == G.size()-i)printf(".");
				printf("%d",G[i]);
			}
		}
		while(num<0)printf("0"), num++;
		puts("");
	}
	return 0;
}


原文地址:https://www.cnblogs.com/jhcelue/p/7056288.html