PAT1029B 旧键盘 (20 分)/1084A
https://pintia.cn/problem-sets/994805260223102976/problems/994805292322111488
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
string a,b;
char rs[37];
int index,num=0;
cin>>a>>b;
for(int i=0;i<a.length();i++){
//当a与b内容不同时
if(a[i]!=b[i-num]){
int flag=0;
if(a[i]>='0'&&a[i]<='9'){
for(int j=0;j<index;j++){
if(rs[j]==a[i]){
flag=1;
break;
}
}
if(flag==0){
rs[index]=a[i];
index = index+1;
}
}
else if(a[i]>='a'&&a[i]<='z'){
char c=a[i]-'a'+'A';
for(int j=0;j<index;j++){
if(rs[j]==c){
flag=1;
break;
}
}
if(flag==0){
rs[index]=c;
index = index+1;
}
}
else if(a[i]>='A'&&a[i]<='Z'){
for(int j=0;j<index;j++){
if(rs[j]==a[i]){
flag=1;
break;
}
}
if(flag==0){
rs[index]=a[i];
index = index+1;
}
}
else{
for(int j=0;j<index;j++){
if(rs[j]==a[i]){
flag=1;
break;
}
}
if(flag==0){
rs[index]=a[i];
index = index+1;
}
}
num =num +1;
}
}
for(int i=0;i<index;i++){
cout<<rs[i];
}
return 0;
}
PAT1033B 旧键盘打字 (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805288530460672
最后一个测试点过不了
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
//a-z, A-Z]、数字 0-9、以及下划线 _(代表空格)、,、.、-、+(代表上档键)。题目保证第 2 行输入的文字串非空。
int main(){
string a,b;
getline(cin,a);
getline(cin,b);
bool flag=false;
for(int i=0;i<a.length();i++){
if(a[i]=='+'){
flag = true;
break;
}
}
if(flag){
for(int i=0;i<a.length();i++){
if(a[i]>='A'&&a[i]<='Z'){
a[i]=a[i]-'A'+'a';
}
}
}
// if(flag){
// for(int i=0;i<a.length();i++){
// if(a[i]>='A'&&b[i]<='Z'){
// b[i]=b[i]-'A'+'a';
// }
// }
// }
for(int i=0;i<b.length();i++){
char c = b[i];
bool index=true;
for(int j=0;j<a.length();j++){
if(c==a[j]){
if(c>='a'&&c<='z'){
index = false;
}
else if(c==','||c=='.'||c=='-'||c=='_'){
index = false;
}
else if(c>='0'&&c<='9'){
index = false;
}
}
else if(c>='A'&&c<='Z'&&flag){
index =false;
}
}
if(index==true){
cout<<b[i];
}
}
cout<<endl;
return 0;
}
PAT1038B 统计同成绩学生 (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805284092887040
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int cnt[110]={0};
int n;
cin>>n;
for(int i=0;i<n;i++){
int index=0;
cin>>index;
cnt[index]++;
}
int m;
cin>>m;
for(int i=0;i<m-1;i++){
int index=0;
cin>>index;
cout<<cnt[index]<<" ";
}
int index=0;
cin>>index;
cout<<cnt[index];
return 0;
}
PAT1039B 到底买不买 (20 分)/1092A
https://pintia.cn/problem-sets/994805260223102976/problems/994805283241443328
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int rs[62]={0};
string a,b;
getline(cin,a);
getline(cin,b);
int index=0,n=0;
bool flag=true;
//载入店家手串数据
for(int i=0;i<a.length();i++){
char c=a[i];
if(c>='0'&&c<='9'){
rs[c-'0']++;
}
else if(c>='A'&&c<='Z'){
rs[c-'A'+10]++;
}
else{
rs[c-'a'+36]++;
}
}
for(int i=0;i<b.length();i++){
char c=b[i];
int m=0;
if(c>='0'&&c<='9'){
m=c-'0';
}
else if(c>='A'&&c<='Z'){
m=c-'A'+10;
}
else{
m=c-'a'+36;
}
if(rs[m]>0){
rs[m]--;
index++;
}
else if(rs[m]==0){
n++;
flag =false;
}
}
if(flag==false){
printf("No %d",n);
}
else{
printf("Yes %d",a.length()-b.length());
}
return 0;
}
PAT1042B 字符统计 (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805280817135616
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
// request for member 'cnt' in 'node', which is of non-class type 'Node [200]'
struct Node{
char c;
int cnt=0;
}node[200];
bool cmp(Node a,Node b){
if(a.cnt!=b.cnt) return a.cnt>b.cnt;
else return a.c<b.c;
}
int main(){
string a;
getline(cin,a);
int n=0;
for(int i=0;i<a.length();i++){
char c1 =a[i];
if(c1>='A'&&c1<='Z'){
c1=c1-'A'+'a';
}
if(c1>='a'&&c1<='z'){
bool flag=false;
for(int j=0;j<n;j++){
if(node[j].c==c1){
node[j].cnt++;
flag=true;
}
}
if(flag==false){
node[n].c=c1;
node[n].cnt=1;
n=n+1;
}
}
}
sort(node,node+n,cmp);
cout<<node[0].c<<" "<<node[0].cnt<<endl;
return 0;
}
PAT1043B 输出PATest (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805280074743808
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
string str;
cin>>str;
int cnt[6]={0};
int index=0;
for(int i=0;i<str.length();i++){
if(str[i]=='P'){
cnt[0]++;
index++;
}
else if(str[i]=='A'){
cnt[1]++;
index++;
}
else if(str[i]=='T'){
cnt[2]++;
index++;
}
else if(str[i]=='e'){
index++;
cnt[3]++;
}
else if(str[i]=='s'){
cnt[4]++;
index++;
}
else if(str[i]=='t'){
cnt[5]++;
index++;
}
}
while(1){
if(cnt[0]>0){
cout<<'P';
cnt[0]--;
}
if(cnt[1]>0){
cout<<'A';
cnt[1]--;
}
if(cnt[2]>0){
cout<<'T';
cnt[2]--;
}
if(cnt[3]>0){
cout<<'e';
cnt[3]--;
}
if(cnt[4]>0){
cout<<'s';
cnt[4]--;
}
if(cnt[5]>0){
cout<<'t';
cnt[5]--;
}
if(cnt[0]==0&&cnt[1]==0&&cnt[2]==0&&cnt[3]==0&&cnt[4]==0&&cnt[5]==0){
cout<<endl;
break;
}
}
return 0;
}
PAT1047B 编程团体赛 (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805277163896832
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Group{
int g;
int score;
}group[1010];
bool cmp(Group a,Group b){
if(a.score!=b.score) return a.score>b.score;
else return a.g<b.g;
}
int main(){
int n=0;
cin>>n;
int index=0;
for(int i=0;i<n;i++){
int gro,stu,grade;
scanf("%d-%d %d",&gro,&stu,&grade);
bool flag=false;
for(int j=0;j<index;j++){
if(group[j].g==gro){
group[j].score+=grade;
flag=true;
}
}
if(flag==false){
group[index].g=gro;
group[index].score=grade;
index++;
}
}
sort(group,group+index,cmp);
cout<<group[0].g<<" "<<group[0].score;
return 0;
}
PAT1041A Be Unique (20 分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805444361437184
最后两个测试点运行超时
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct N{
int num;
int index;
int cnt;
}node[1010];
bool cmp(N a,N b){
if(a.cnt!=b.cnt) return a.cnt<b.cnt;
else return a.index<b.index;
}
int main(){
int n,m=0;
cin>>n;
for(int i=0;i<n;i++){
int rs;
bool flag=true;
cin>>rs;
for(int j=0;j<m;j++){
if(node[j].num==rs){
flag=false;
node[j].cnt++;
}
}
if(flag){
node[m].cnt=1;
node[m].index=i;
node[m].num=rs;
m++;
}
}
sort(node,node+m,cmp);
bool flag=true;
for(int i=0;i<m;i++){
if(node[i].cnt==1){
flag=false;
cout<<node[i].num;
break;
}
}
if(flag){
cout<<"None";
}
return 0;
}
修改
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
int n,m=0;
cin>>n;
int num[100010]={0},key[100010]={0};
for(int i=0;i<n;i++){
int index=0;
cin>>index;
if(num[index]==0){
key[m++]=index;
}
num[index]++;
}
bool flag=true;
for(int i=0;i<m;i++){
int index=key[i];
if(num[index]==1){
flag=false;
cout<<index;
break;
}
}
if(flag){
cout<<"None";
}
return 0;
}
PAT1050A String Subtraction (20 分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805429018673152
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
string a,b;
bool rs[128]={false};
getline(cin,a);
getline(cin,b);
for(int i=0;i<b.length();i++){
rs[b[i]]=true;
}
for(int i=0;i<a.length();i++){
if(rs[a[i]]==false){
cout<<a[i];
}
}
return 0;
}
PAT1005B 继续(3n+1)猜想 (25 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805320306507776
#include<iostream>
#include<algorithm>
#define MAX 101
using namespace std;
bool cmp(int e, int f)
{
return (e > f);
}
int main() {
/*输入数据个数*/
int count;
cin >> count;
int num[MAX];
int cnt = 0;
/*收集覆盖数字*/
int var[100001];
/*关键数字*/
int key[MAX];
/*收集全部变量*/
for (int i = 0; i < count ; i++) {
cin >> num[i];
}
/*将所有变量的覆盖值存储*/
for (int i = 0; i < count; i++) {
while (num[i] != 1) {
if (num[i] % 2 == 0) {
num[i] = num[i] / 2;
var[cnt++] = num[i];
}
else {
num[i] = (num[i] * 3 + 1)/2;
var[cnt++] = num[i];
}
}
}
/*将在变量数组不再覆盖数组中的数字载入到关键字数组中*/
int important = 0,imp = 0;
for (int i = 0; i < count; i++) {
imp = 1;
for (int j = 0; j < cnt; j++) {
if (num[i] == var[j]) {
imp = 0;
break;
}
}
/*当该数字不在覆盖数组中*/
if (imp == 0) {
key[important++] = num[i];
}
}
/*对关键字数组进行由大到小的排列*/
sort(key, key + important, cmp);
/*将数组输出,数字之间间隔一个空格,最后一个后面没有空格*/
for (int i = 0; i < important - 1; i++) {
cout << key[i] << " ";
}
cout << key[important - 1];
return 0;
}
PAT1048A Find Coins (25 分)
https://pintia.cn/problem-sets/994805342720868352/problems/994805432256675840
测试点1错误,啊啊啊啊,有大神知道是什么数据么
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
bool num[1010]={false};
int n=0,sum=0;
cin>>n>>sum;
for(int i=0;i<n;i++){
int number;
cin>>number;
num[number]=true;
}
bool flag=true;
for(int i=1;i<=1000;i++){
if(num[i]){
if(num[sum-i]&&(i<=(sum-i))){
cout<<i<<" "<<sum-i;
flag=false;
break;
}
}
}
if(flag){
cout<<"No Solution";
}
return 0;
}