IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> pat乙级 1059 c语言竞赛 -> 正文阅读

[C++知识库]pat乙级 1059 c语言竞赛

做法

#include<iostream>
#include<vector>
using namespace std;
bool isprime(int k){
	for(int i=2;i*i<=k;i++){
		if(k%i==0) return false;
	}
	return true;
}
bool judge(int rank){
	if(rank==1) cout<<":Mystery Award"<<endl;
	else if(isprime(rank)) cout<<":Minion"<<endl;
	else cout<<":Chocolate"<<endl;
}
int main(){
	int n;
	cin>>n;
	string s;bool a[1005]={false};
	vector<string> v(n+1);
	for(int i=1;i<=n;i++){
		cin>>v[i];
	}
	int k;
	cin>>k;
	int flag=0;
	for(int i=0;i<k;i++){
		cin>>s;
		flag=0;
		cout<<"第"<<i+1<<"输入"<<endl;
		for(int j=1;j<=n;j++){
					//找过但不是查询的不用输出 
			if(v[j]==s){//判断奖励类型 
			flag=1; 
			if(a[j]==true) {cout<<s<<":Checked"<<endl; break;}
			cout<<v[j];
			judge(j);
			a[j]=true;
			
			}
			
		}
		if(flag==0) cout<<s<<":Are you kidding?"<<endl;
	}
	
}

输出
6
1111
6666
8888
1234
5555
0001
6
8888
第1输入
8888:Minion
0001
第2输入
0001:Chocolate
1111
第3输入
1111:Mystery Award
2222
第4输入
2222:Are you kidding?
8888
第5输入
8888:Checked
2222

问题最后一个2222 没有回车空行输入不成功;这个问题在测试用例里会有回车符不用担心,只是你的赋值粘贴后没有;关键是你的代码超时
解决办法:用哈希索引去掉内层循环,另外bool数组也可以用set代替

优化 柳婼.

#include <iostream>
#include <set>
#include <cmath>
using namespace std;
int ran[10000];
bool isprime(int a) {
    if(a <= 1) return false;
    int Sqrt = sqrt((double)a);
    for(int i = 2; i <= Sqrt; i++) {
        if(a % i == 0)
            return false;
    }
    return true;
}
int main() {
    int n, k;
    scanf("%d", &n);
    for(int i = 0; i < n; i++) {
        int id;
        scanf("%d", &id);
        ran[id] = i + 1;
    }
    scanf("%d", &k);
    set<int> ss;
    for(int i = 0; i < k; i++) {
        int id;
        scanf("%d", &id);
        printf("%04d: ", id);
        if(ran[id] == 0) {
            printf("Are you kidding?\n");
            continue;
        }
        if(ss.find(id) == ss.end()) {
            ss.insert(id);
        } else {
            printf("Checked\n");
            continue;
        }
        if(ran[id] == 1) {
            printf("Mystery Award\n");
        }else if(isprime(ran[id])) {
            printf("Minion\n");
        }else {
            printf("Chocolate\n");
        }
    }
    return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-30 11:45:05  更:2021-09-30 11:47:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 23:19:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码