所有代码都建议使用c++

A

#include <stdio.h>
//这题没啥单纯输出,printf()这里面如果没有%d这种类型的符号,仅有"xxx",可以当成原样输出xxx
int main(){
    printf("QUIE NO1");
    return 0;
}

B

#include<bits/stdc++.h>
using namespace std;
//题干可以简化为,求最大值减去最小值,因为这样一定可以得出一组数据里面的最大差值
int main(){
	int n;
    int min = 1e5, max = -1e5;//min要变成当下的最大值,这样可以保证维护最小值的时候是包括所有数的,max同理
    //1e5=->100000,科学计数法
    cin >> n;//这组数一共有几个数字
    int a;

    while (n--){
//输出n次
        cin >> a;
        if (a < min){
            min = a;
        }
//判断是不是比min小,如果比min小就让min变成这个值
        if (a > max){
            max = a;
//max同理为最大
        }
    }
    cout << max - min;
	return 0;
}

C

#include<bits/stdc++.h>
using namespace std;

int main(){
	int x, y;
    cin >> x >> y;
    if (x == y){//判断是不是相等
        cout << "Tacit!";
    }else{//else 就是否则的意思,语义就是x!=y,x不等于y
        cout << "No Tacit!";
    }
	return 0;
}

D

#include<bits/stdc++.h>
using namespace std;
//题目ak的意思就是,所有题目都通过系统测试,也就是有a道题就要写对a道题
int main(){
	int a, b, c;
    cin >> a >> b >> c;
    cout << c / a;//在c+编程环境里面,直接相除不会向上取整,同Int相除会直接去除小数部分,仅保留整数部分
	return 0;
}

E

#include<bits/stdc++.h>
using namespace std;
//很单纯的a+b问题,不给予解释
int main(){
	int a, b;
    cin >> a >> b;
    cout << a + b;
	return 0;
}

F

#include<bits/stdc++.h>
using namespace std;

int main(){
	int sum1 = 0, sum2 = 0, n;
    for (int i = 1; i <= 12; i++){
        cin >> n;
    //n是各月预算,这个循环的意思就是输入12个月的预算
        sum1 = sum1 + 300 - n;
//sum1是津津手上的钱,每个月有300,n是预算也就是支出,很容易得到这个式子
        if (sum1 < 0){              
//这个判断就是顺应题目要求,如果津津手里的钱加上妈妈给的300不够在这个月用,就输出-x,也就是-某个月
                cout << "-" << i;
            return 0;
    //return 0,直接结束程序
        }else{
            sum2 += (sum1 / 100 * 100);
//sum2的意思就是,津津的钱预算多的时候,大于100的时候去使用,可以存到过年用的钱
            sum1 %= 100;
//这个式子表达出来就是,取余100,找sum1/100剩下的余数,也就是存完钱后剩下的钱
        }
    }
    cout << sum2 * 1.2 + sum1;
	return 0;
}

G

#include <bits/stdc++.h>
using namespace std;
void solve() {
    int n;
    cin>>n;
        if (n<=1)//n<=1肯定不是素数了
            cout<<"No"<<endl;
        else if(n==2)
            cout<<"Yes"<<endl;
        else
        {
            for (int i=2;i<=sqrt(n);i++){//sqrt的意思是平方根
                            //各自可以去手写一遍,为什么取到n的平方根就可以了
                if (n%i==0){
                            //代码可以被某个除了1以外的数整除,所以这个数字肯定是合数不是素数了
                 cout<<"No"<<endl;
                    return;
//结束这次的测试,因为是多测,我们不能使用return 0直接结束程序,所以使用这种写法,可以有效规避复杂写法
                }
            }
            cout<<"Yes"<<endl;
        }


}

int main() {
    int t=1;
//首页题目说了有t组数据,代表多测,为了代码可读性高,我们一般写一个这样的模板
    cin >> t;
    while (t--) solve();
    return 0;
}

H

#include<bits/stdc++.h>
//这题理论上可以暴力过,但是不建议,因为刚刚好很符合素数筛法的模板
using namespace std;
bool isprime[100000]={1};
//把所有数先当成素数使用吗,所有让所有数组元素全部编程,bool形态的数组只有2值,一个0一个1
int prime[10000];
//未来存素数的数组,此时为空
void getprime(int n){
//void 无返回值的意思
    for(int i=0;i<=n;i++)isprime[i]=1;
//担心数组污染一般全部循环走一下全部赋值为1
    isprime[0]=isprime[1]=0;
//0跟1都不是素数,所有让他们为0
    int cnt=1;
//cnt是为了给prime数组使用
    for(int i=2;i<=n;i++){//从2开始,因为0,1都不是素数

        if(isprime[i])prime[cnt++]=i;
//如果筛完了,这个数还是为1,也就是代表它是素数,就让prime的数组存一下这个素数

        for(int j=1;j<=cnt&&i*prime[j]<=n;j++){
//j<=cnt,就是限制只搜索到prime已存入的素数因为没有存的时候一般默认后面都是0,全是无效数字
//i*prime[j]<=n就是因为我们的题目要求只是0-n这个范围,大于n的数就没必要筛选了
            isprime[i*prime[j]]=0;
//这个代码意思就是,素数的倍数一定不是素数,所以就在isprime中给那个数置为0,代表它不是素数
            if(i%prime[j]==0)break;
//如果一个数能被素数整除就结束,代表它肯定不是素数了
        }
    }
}
void solve(){
	
    int n;
    int sum=0;
    cin>>n;
    getprime(n);
	for(int i=2;i<=n;i++){
        if(isprime[i]==1)sum++;
//只判断是不是素数,如果isprime[]里面这个数是1,就代表它是素数,sum+1
    }
	cout<<sum<<endl;
}
int main(){
	int t=1;
	cin>>t;//题目是多组数据,多测环境常规模板
	while(t--)solve();
	return 0;
}

I

//I题暂不提供详细题解,建议学习二维数组后自己思考
#include<bits/stdc++.h>
using namespace std;
int arr[20][20];
int ways[][2]={{0,1},{1,1},{1,0},{-1,1}};
bool inmap(int x, int y){
    return (x<= 19 && x>=1 && y <= 19 && y>=1)?true:false;
}
int check(int x, int y )
{
    int nownum = arr[x][y];
    for (int i  = 0 ;  i <4 ;++i){
        for (int t = 1 ; t <= 4;++t){
            int nextx= x + t*ways[i][0];
            int nexty= y + t*ways[i][1];
            if (!inmap(nextx,nexty)){break;}
            if (arr[nextx][nexty]!=nownum) {break;}
            if (t==4){
                nextx+=ways[i][0];
                nexty+=ways[i][1];
                if (inmap(nextx,nexty)&&arr[nextx][nexty]==nownum) break;
                nextx=x-ways[i][0];
                nexty=y-ways[i][1];
                if (inmap(nextx,nexty)&&arr[nextx][nexty]==nownum) break;
                return 1;
            }
        }
    }
    return 0;
}
void solve(){
    for (int i = 1; i <= 19 ; ++i)
        for (int j = 1 ;j <= 19 ; ++j){cin>>arr[i][j];}
    for (int x  = 1 ; x<= 19 ; ++x){
        for (int y = 1 ; y <= 19 ; ++y){
            if (arr[x][y]==0) continue;
            if (check(x,y)!= 0 ){
                cout<<arr[x][y]<<"\n";
                cout<<x<< " "<<y<<"\n";
                return;
            }
        }
    }
    cout<<0<<"\n";
    return;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t ;
    cin>>t;
    while(t--){
        solve();
}
    return 0;
}