PAT (Basic Level) Practise

2023-12-12 10:38
文章标签 level pat basic practise

本文主要是介绍PAT (Basic Level) Practise,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目集:pat.zju.edu.cn/contests/pat-b-practise

注:个人练习,仅供交流,欢迎指正,禁止商业用途。

B1001

#include <iostream>
using namespace std;
int mainB1001()
{
int a;
int count=0;
cin>>a;
while(1)
{
//cout<<count<<endl;
if(a==1)
break;
else
count++;
if(a%2==0)
//a=a/2;
a=a>>1;
else
{
a=(3*a+1)>>1;
//a=(3*a+1)/2;
}
}
cout<<count;
return 0;
}

B1002


#include<iostream>
#include<string>
#include<map>
#include<sstream>
using namespace std;
int mainB1002()
{
string a;
cin>>a;
int sum=0;
map<char,string> PyMap;
typedef pair<char,string> PyPair;
PyMap.insert(PyPair('0',"ling"));
PyMap.insert(PyPair('1',"yi"));
PyMap.insert(PyPair('2',"er"));
PyMap.insert(PyPair('3',"san"));
PyMap.insert(PyPair('4',"si"));
PyMap.insert(PyPair('5',"wu"));
PyMap.insert(PyPair('6',"liu"));
PyMap.insert(PyPair('7',"qi"));
PyMap.insert(PyPair('8',"ba"));
PyMap.insert(PyPair('9',"jiu"));
map<char,int> digitMap;
typedef pair<char,int> digitPair;
digitMap.insert(digitPair('0',0));
digitMap.insert(digitPair('1',1));
digitMap.insert(digitPair('2',2));
digitMap.insert(digitPair('3',3));
digitMap.insert(digitPair('4',4));
digitMap.insert(digitPair('5',5));
digitMap.insert(digitPair('6',6));
digitMap.insert(digitPair('7',7));
digitMap.insert(digitPair('8',8));
digitMap.insert(digitPair('9',9));
string::iterator sit;
for(sit=a.begin();sit!=a.end();sit++)
{
sum+=digitMap[*(sit)];
}
stringstream ss;
ss<<sum;
string ssum=ss.str();
int i=0;
for(i=0;i < ssum.length()-1;i++)
{
cout<<PyMap[ssum[i]]<<" ";
}
cout<<PyMap[ssum[i]];
return 0;
}

B1003

#include<iostream>
#include<string>
using namespace std;
int mainB1003()
{
string s;
int N;
int c1,c2,c3,flag;
bool no;
cin>>N;
for(int i=0;i<N;i++)
{
cin>>s;
c1=0;
c2=0;
c3=0;
flag=0;
no=false;
string::iterator sit;
for(sit=s.begin();sit!=s.end();sit++)
{
if(*(sit)!='P' && *(sit)!='A' && *(sit)!='T')//"WHATEVER"
{
no=true;
break;
}
if(*(sit)=='P')
{
if(flag!=0)//"PPAT"
{
no=true;
break;
}
else
flag=1;
continue;
}
if(*(sit)=='T')
{
if(flag!=1)//"PATT"
{
no=true;
break;
}
else
flag=2;
continue;
}
if(*(sit)=='A')
{
switch(flag)
{
case 0:c1++;break;
case 1:c2++;break;
case 2:c3++;break;
default:continue;
}
}
}
if(c1*c2==c3 && c2!=0 && no!=true && flag==2)//"PT",no,"PAA"
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}

B1004


//其实不用sort(),线性遍历即可,sort()代码少点。
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct student
{
string name;
string sid;
int mark;
// 这是通过运算符重载来sort()
//bool operator <(const student & anostu) const
//{return mark<anostu.mark;}
};
// 这是通过比较函数来sort()
bool sortByMark(const student & a,const student & b) //no CONST at tail
{
return a.mark<b.mark;
}
int mainB1004()
{
int N;
cin>>N;
string name;
string sid;
int mark;
student stu;
vector<student> vstu;
for(int i=0;i<N;i++)
{
cin>>name>>sid>>mark;
stu.name=name;
stu.sid=sid;
stu.mark=mark;
vstu.push_back(stu);
}
// 这是通过运算符重载来sort()
//sort(vstu.begin(),vstu.end());
// 这是通过比较函数来sort()
sort(vstu.begin(),vstu.end(),sortByMark);
cout<<(*vstu.rbegin()).name<<" "<<(*vstu.rbegin()).sid<<endl;
cout<<vstu[0].name<<" "<<vstu[0].sid;
return 0;
}

B1005

#include<iostream>
#include<set>
#include<map>
using namespace std;
int mainB1005()
{
map<int,set<int>> myMap;
int N;
cin>>N;
int tmp,a;
for(int i=0;i<N;i++)
{
cin>>tmp;
a=tmp;
while(1)
{
//cout<<count<<endl;
if(a==1)
{
myMap[tmp].insert(1);
break;
}
else
myMap[tmp].insert(a);
if(a%2==0)
a=a>>1;
else
a=(3*a+1)>>1;
}
}
map<int,set<int>>::iterator iit,jit;
WHILELOOP:	
for(iit=myMap.begin();iit!=myMap.end();iit++)
{
for(jit=myMap.begin();jit!=myMap.end();jit++)
{
if(((jit->second).find(iit->first))==jit->second.end() || iit==jit)    // if is not contained
{
continue;
}
else
{
myMap.erase(iit);
goto WHILELOOP;//break;
}
}
}
int eleNum=myMap.size();
int count=0;
map<int,set<int>>::reverse_iterator rit;
for(rit=myMap.rbegin();rit!=myMap.rend();rit++)
{
count++;
cout<<rit->first;
if(count!=eleNum)
cout<<" ";
}
return 0;
}

B1006

#include<iostream>using namespace std;int mainB1006()
{int num;int numb,nums,numg;cin>>num;numb=num/100;num%=100;nums=num/10;num%=10;numg=num;//cout<<numb<<endl<<nums<<endl<<numg<<endl;for(int i=0;i<numb;i++)cout<<'B';for(int i=0;i<nums;i++)cout<<'S';for(int i=1;i<=numg;i++)cout<<i;return 0;
}


B1007


#include<stdio.h>
#include<math.h>//more effective function.
bool isPrime(int num)
{if (num <= 2){return num == 2;}if (num % 2 == 0){return false;}int iSqrt = (int)sqrt(double(num));int i;//it is inefficient/*for (i = 3; i <= iSqrt,num%i>0; i+=2);*/for (i = 3; i <= iSqrt; i+=2){if(num%i==0)break;}return i>iSqrt ? true : false;
}int mainB1007()
{//printf("%d\n",isPrime(11));int N;int pnum=0;int pcount=0;int isqrt;int t;int pv[100000];scanf("%d",&N);pv[pnum++]=2;pv[pnum++]=3;for(int i=4;i<=N;i++){if(isPrime(i))pv[pnum++]=i;elsecontinue;}for(int i=0;i<pnum;i++){if(pv[i]+2==pv[i+1])pcount++;}printf("%d",pcount);return 0;
}


B1008


#include<iostream>using namespace std;int mainB1008()
{int N,M;int a[100];int tmp;cin>>N>>M;M%=N;//if M>=Nfor(int i=0;i<N;i++)cin>>a[i];for(int i=0;i<M;i++){tmp=a[N-1];for(int j=N-1;j>0;j--){a[j]=a[j-1];}a[0]=tmp;}for(int i=0;i<N-1;i++)cout<<a[i]<<" ";cout<<a[N-1];return 0;
}


B1009


#include<iostream>
#include<string>
#include<sstream>
#include<vector>
using namespace std;
int mainB1009()
{/*g++下,这样是可以的。但vc下,需要去掉部分注释*/vector<string> sv;vector<string>::reverse_iterator rit;//string s;string word;//getline(cin,s);//read a string line//stringstream ss(s);//while(ss>>word)while(cin>>word)//if g++sv.push_back(word);for(rit=sv.rbegin();rit+1!=sv.rend();rit++)//handle the last one casecout<<*rit<<" ";cout<<*rit;return 0;
}


B1010


#include<iostream>
#include<vector>
#include<string>
#include<sstream>
using namespace std;int mainB1010()
{vector<int> cv;vector<int> ev;vector<int>::iterator cit;vector<int>::iterator eit;int c,e;string s;getline(cin,s);stringstream ss(s);while(ss>>c>>e){cv.push_back(c);ev.push_back(e);}if(cv.size()==1){cout<<cv[0]*ev[0]<<" "<<(ev[0]==0?0:ev[0]-1);return 0;}for(cit=cv.begin(),eit=ev.begin();cit+2!=cv.end(),eit+2!=ev.end();cit++,eit++){cout<<(*cit)*(*eit)<<" "<<*eit-1<<" ";}cout<<(*cit)*(*eit)<<" "<<*eit-1;if(*(eit+1)!=0){cit++;eit++;cout<<" "<<(*cit)*(*eit)<<" "<<*eit-1;}return 0;
}



这篇关于PAT (Basic Level) Practise的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/484307

相关文章

MiniCPM-V: A GPT-4V Level MLLM on Your Phone

MiniCPM-V: A GPT-4V Level MLLM on Your Phone 研究背景和动机 现有的MLLM通常需要大量的参数和计算资源,限制了其在实际应用中的范围。大部分MLLM需要部署在高性能云服务器上,这种高成本和高能耗的特点,阻碍了其在移动设备、离线和隐私保护场景中的应用。 文章主要贡献: 提出了MiniCPM-V系列模型,能在移动端设备上部署的MLLM。 性能优越:

查看Excel 中的 Visual Basic 代码,要先设置excel选项

1. excel VB的简单介绍 百度安全验证 2.excel选项设置 excel表格中在选项->自定义功能区域,选择开发工具,visual baisc/查看代码,即可看到代码。 3.excel已经设置,可以直接查看

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

PAT (Advanced Level) Practice——1011,1012

1011:  链接: 1011 World Cup Betting - PAT (Advanced Level) Practice (pintia.cn) 题意及解题思路: 简单来说就是给你3行数字,每一行都是按照W,T,L的顺序给出相应的赔率。我们需要找到每一行的W,T,L当中最大的一个数,累乘的结果再乘以0.65,按照例子写出表达式即可。 同时还需要记录每一次选择的是W,T还是L

N-ary Tree Level Order Traversal

Input: root = [1,null,3,2,4,null,5,6]Output: [[1],[3,2,4],[5,6]] 思路:就是一个queue的level order 收集; /*// Definition for a Node.class Node {public int val;public List<Node> children;public Node() {}pu

Basic Calculator 总结

Basic Calculator 思路:stack中间存数,遇见+,-都当符号位,push num或者-num进去;最后相加;重要的是如何处理括号,那么这里一种方法是用递归调用;count左右括号,如果为0,那么就是一个反括号的位置了,那么 //(      ) //j......i; substring(j + 1, i); 这题的通用解法,可以扩展到二三题; class Solutio

BFS 到 Level Order traverse 到 UnionFind 到 Topological Sort 到 Dijkstra 思路总结

====BFS 找联通量,找component. Number of Islands (BFS, DFS 都可以做) Surrounded Regions 算法是:先收集四个周边的 O,然后用BFS或者DFS向里面扩展,visited记录connect点,最后如果没有被visited到的O,会变成X;T: O(m*n), Space: O(m*n). Is Graph Bipartite (

UE的Gameplay框架(三) —— Level和World

这篇文章关注于Level和World,对其在Gameplay框架中的作用及使用做简单讲解。 文章目录 Level和World的作用关卡流送关卡流送体积蓝图加载 参考资料 Level和World的作用 在UE里,Level 可以看作是 Actors 的容器,其有一个LevelScriptActor用于处理特定于关卡的逻辑,但一般来说游戏的逻辑不要写在LevelScri

PAT (Advanced Level) Practice

1001:  题目大意: 计算 a+b 的结果,并以标准格式输出——即每三个数字一组,组之间用逗号分隔(如果数字少于四位,则不需要逗号分隔)  解析: 我们知道相加右正有负,对于样例来说 Sample Input: -1000000 9 Sample Output: -999,991 如果是从左往右,算上负号的话输出应该是-99,999,1 从右往左:-,999,991离正确

做克隆虚拟机的basic

新建一台虚拟机(之前写的有这一步) 虚拟机里操作 vi /etc/hostname    改称basic (可改可不改)  vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILU