#include <bits/stdc++.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <Windows.h>
#include <time.h>
using namespace std;
void Slowsay(string a) {int l=a.size();for(int i=0;i<l;i++){cout<<a[i];Sleep(20);}}
int Rand(int l,int r){
	int ra=rand();
	ra%=(r-l+1);
	ra+=l;
	Sleep(123);
	return ra;
}
vector<int> chuf(int k){
	vector<int> z;
	for(int i=1;i*i<=k;i++){
		if(k%i==0) z.push_back(i);
	}
	return z;
}
struct node{
	int a,b;
	char c;
	int d;
};
node runn(int t){
	node k;
	int tmp1,tmp2,tmp3;
	if(t==1) tmp1=Rand(1,100);
	if(t==2) tmp1=Rand(101,1000);
	if(t==3) tmp1=Rand(1001,10000);
	tmp2=Rand(1,4);
	if(tmp2==1) k.c='+';
	if(tmp2==2) k.c='-';
	if(tmp2==3) k.c='*';
	if(tmp2==4) k.c='/';
	if(t==1){
		if(k.c=='+') tmp3=Rand(1,100);
		if(k.c=='-') tmp3=Rand(1,tmp1);
		if(k.c=='*') tmp3=Rand(1,100);
		if(k.c=='/'){
			vector<int> tmp=chuf(tmp1);
			int amp=Rand(0,tmp.size()-1);
			tmp3=tmp[amp];
		}
	}
	if(t==2){
		if(k.c=='+') tmp3=Rand(101,1000);
		if(k.c=='-') tmp3=Rand(101,tmp1);
		if(k.c=='*') tmp3=Rand(101,1000);
		if(k.c=='/'){
			vector<int> tmp=chuf(tmp1);
			int amp=Rand(0,tmp.size()-1);
			tmp3=tmp[amp];
		}
	}
	if(t==3){
		if(k.c=='+') tmp3=Rand(1001,10000);
		if(k.c=='-') tmp3=Rand(1001,tmp1);
		if(k.c=='*') tmp3=Rand(1001,10000);
		if(k.c=='/'){
			vector<int> tmp=chuf(tmp1);
			int amp=Rand(0,tmp.size()-1);
			tmp3=tmp[amp];
		}
	}
	k.a=tmp1,k.b=tmp3;
	return k;
}
int t; 

signed main(){
	srand(time(0));
	system("color c");
	Slowsay("欢迎来到计算世界;\n");
	cout<<"■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n";
	cout<<"■(1) 四则低级计算(1~100)                             ■\n";
	cout<<"■(2) 四则中级计算(101~1000)                          ■\n";
	cout<<"■(3) 四则高级计算(1001~10000)                        ■\n";
	cout<<"■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n";
	int t;
	Sleep(2000);
	system("cls");
	while(MessageBox(NULL,"挑战","挑战",MB_YESNO)==IDYES) {
		system("cls");
		Slowsay("请输入:");
		cin>>t; 
		Slowsay("请等待...");
		Slowsay("生成随机数!(2.1秒后生成!)");
		Slowsay("........\n");
		//Slowsay("请在三十秒内作答完毕!") ; 
		system("cls");
		vector<node> a;
		for(int i=1;i<=10;i++){
			a.push_back(runn(t));
		}
		for(auto &it:a){
			cout<<it.a<<it.c<<it.b<<"="<<endl;
			if(it.c=='+') it.d=it.a+it.b;
			if(it.c=='-') it.d=it.a-it.b;
			if(it.c=='*') it.d=it.a*it.b;
			if(it.c=='/') it.d=it.a/it.b;
		}
		int tmp[11];
		auto start = std::chrono::high_resolution_clock::now();
		for(int i=1;i<=10;i++){
			
			cin>>tmp[i];
		}
		auto end = std::chrono::high_resolution_clock::now();
		auto duration =std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
		auto tmpt=duration; 
		/*if(tmpt>=30000){
			Slowsay("您已超时!此次输入做废!");
			continue; 
		}
		*/
		system("cls");
		
		int cnt=0; 
		Slowsay("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n");
		Slowsay("■                          成绩单                      ■\n");
		for(int i=1;i<=10;i++){
			if(tmp[i]==a[i-1].d){
				cnt++;
				Slowsay("■                          ");
				if(i!=10)Slowsay(" ");
				cout<<i<<"、"; 
				Slowsay("正确                    ■\n");
			}else{
				Slowsay("■                          ");
				if(i!=10)Slowsay(" ");
				cout<<i<<"、"; 
				Slowsay("错误                    ■\n");
			}
		}
		Slowsay("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n");
		Slowsay("您在本次挑战答对了");
		cout<<cnt<<"题\n";
		if(cnt==10){
			Slowsay("您荣获计算大师称号!\n");
			Slowsay("       恭喜         \n");
		}
	}
	
	return 0;
}