L2-019 悄悄关注 - 哈希表
PTA | 程序设计类实验辅助教学平台
1、java - 喜闻乐见超时
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String[] name=sc.nextLine().split(" ");
Set<String> st=new HashSet<>();
for(int i=0;i<name.length;i++) st.add(name[i]);
int k=sc.nextInt();
double sum=0;
Set<String> res=new TreeSet<>();
Map<String,Integer>mp=new HashMap<>();
int temp=k;
while(k-->0)
{
String x=sc.next();
int t=sc.nextInt();
mp.put(x,t);
sum+=t;
}
sum/=temp;
for(Map.Entry<String,Integer> x:mp.entrySet())
{
if(!st.contains(x.getKey())&&x.getValue()>sum) res.add(x.getKey());
}
if(res.size()==0) System.out.print("Bing Mei You");
else for(String x:res) System.out.println(x);
}
}
2、c++
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
set<string>st;
for(int i=0;i<n;i++)
{
string s;
cin>>s;
st.insert(s);
}
int k,temp;
double sum=0;
cin>>k;
temp=k;
map<string,int>mp;
while(k--)
{
string x;
int t;
cin>>x>>t;
mp[x]=t;
sum+=t;
}
sum/=temp;
set<string>res;
for(auto x:mp)
if(!st.count(x.first)&&x.second>sum) res.insert(x.first);
if(res.size()==0) cout<<"Bing Mei You";
else for(auto x:res) cout<<x<<endl;
}
L1-027 出租 - 20
PTA | 程序设计类实验辅助教学平台
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String s=sc.next();
TreeSet<Character> st=new TreeSet<>(Comparator.reverseOrder());
for(int i=0;i<s.length();i++) st.add(s.charAt(i));
System.out.print("int[] arr = new int[]{");
int cnt=0;
Map<Character,Integer> mp=new HashMap<>();
for(char x:st)
{
System.out.print(x);
mp.put(x,cnt);
cnt++;
if(cnt!=st.size()) System.out.print(",");
}
System.out.println("};");
System.out.print("int[] index = new int[]{");
int res=0;
for(int i=0;i<s.length();i++)
{
res++;
System.out.print(mp.get(s.charAt(i)));
if(res!=s.length()) System.out.print(",");
}
System.out.print("};");
}
}
L1-025 正整数A+B - 15
PTA | 程序设计类实验辅助教学平台
要注意 不能用split按空格分割
因为有多个空格存在时 比如123 123 kkk
如果按split分割 则就是123+123=246
但正确答案应该是123+?=?
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
String[] a=new String[2];
a[0]=s.substring(0,s.indexOf(" "));
a[1]=s.substring(s.indexOf(" ")+1);
boolean f1=false,f2=false;
if(isDigit(a[0])) f1=true;
if(isDigit(a[1])) f2=true;
if(f1&&f2)
{
Integer s1=Integer.parseInt(a[0]);
Integer s2=Integer.parseInt(a[1]);
System.out.print(a[0]+" + "+a[1]+" = "+(s1+s2));
}
else if(!f1&&f2) System.out.print("? + "+a[1]+" = ?");
else if(f1&&!f2) System.out.print(a[0]+" + ? = ?");
else System.out.print("? + ? = ?");
}
public static boolean isDigit(String s)
{
if(s.charAt(0)=='0'||(s.length()>3&&!"1000".equals(s))) return false;
for(int i=0;i<s.length();i++)
if((s.charAt(i)-'0')<0||(s.charAt(i)-'0')>9)
return false;
return true;
}
}
L1-028 判断素数 - 10
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
while(n-->0)
{
int x=sc.nextInt();
if(isprime(x)) System.out.println("Yes");
else System.out.println("No");
}
}
public static boolean isprime(int n)
{
if(n==0||n==1) return false;
for(int i=2;i<=n/i;i++) if(n%i==0) return false;
return true;
}
}