🚀️ 主页传送门

C++\texttt{C++}

高精度模板
#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#pragma GCC optimize(2,3,"Ofast","inline")
const int N=1e6+10,M=1010,P=1e9+7,MOD=998244353,PI=3.1415926;
const int MAXN=1e5+10;
struct HA{
	int v[MAXN]={0};
	int len=0;
	//读入高精度
	void read(){string s;cin>>s;if(s=="0")return;len=s.length();for(int i=1;i<=len;i++)v[i]=s[len-i]-'0';}
	//输出高精度
	void print(){if(len==0)printf("0");for(int i=len;i>=1;i--)printf("%d",v[i]);}
	//拷贝高精度
	HA cpy()const{HA b;b.len=len;for(int i=1;i<=len;i++)b.v[i]=v[i];return b;}
	//将单精度的值赋给高精度
	void get(const int &k){len=0;int t=k;while(t>0){len++;v[len]=t%10;t/=10;}}
	//高精度ADD加法
	HA operator+(const HA &b)const{
		HA c;c.len=max(len, b.len);
		for(int i=1;i<=c.len;i++){c.v[i]+=v[i]+b.v[i];c.v[i+1]+=c.v[i]/10;c.v[i]%=10;if(c.v[c.len+1]>0)c.len++;}
		return c;//返回答案
	}
	//高精度SUB减法
	HA operator-(const HA &b)const{
		HA c;c.len=len;
		for(int i=1;i<=c.len;i++){c.v[i]+=v[i]-b.v[i]+10;c.v[i+1]+=c.v[i]/10-1;c.v[i]%=10;}
		while(c.len>0&&c.v[c.len]==0)c.len--;//退位
		return c;
	}
	//高精度MUL乘法
	HA operator*(const HA &b)const{
		HA c;if(len==0||b.len==0)return c;//特判乘0
		for(int i=1;i<=len;i++)for(int j=1;j<=b.len;j++){c.v[i+j-1]+=v[i]*b.v[j];c.v[i+j]+=c.v[i+j-1]/10;c.v[i+j-1]%=10;}
		c.len=len+b.len-1;
		while(c.v[c.len+1]>0){c.len++;c.v[c.len+1]+=c.v[c.len]/10;c.v[c.len]%=10;}//删除0
		return c;
	}
	//高精度DIV除法 高精度除高精度
	HA operator/(const HA &b)const{
		HA c;HA rem;
		for(int i=len;i>=1;i--){
			rem=rem*10+v[i];
			//rem/b使用while->减法实现
			while (rem>=b){rem=rem-b;c.v[i]++;}
			if(c.v[i]>0&&c.len==0)c.len=i;//找到最高位
		}
		return c;
	}
	//高精度MOD取余 
	HA operator %(const HA &b)const{HA c=this->cpy();return (c-((c/b)*b));}
	//高精度加低精度
	HA operator+(const int &k)const{
		HA c;int t=k;c.len=len;
		if(c.len==0&&k>0)c.len=1;//特判初始为0的高精度
		for(int i=1;i<=c.len;i++){c.v[i]+=v[i]+t%10;t/=10;c.v[i+1]+=c.v[i]/10;c.v[i]%=10;if(c.v[c.len+1]>0||(i==c.len&&t>0))c.len++;}
		return c;
	}
	//高精度减低精度
	HA operator-(const int &k)const{
		HA c;c.len=len;int t=k;
		for(int i=1;i<=c.len;i++){c.v[i]+=v[i]+10-t%10;t/=10;c.v[i+1]+=c.v[i]/10-1;c.v[i]%=10;}
		while(c.len>0&&c.v[c.len]==0)c.len--;
		return c;
	}
	//高精度乘低精度
	HA operator*(const int &k)const{
		HA c;if(len==0||k==0)return c;c.len=len;
		for(int i=1;i<=c.len;i++){c.v[i]+=v[i]*k;c.v[i+1]+=c.v[i]/10;c.v[i]%=10;if(c.v[c.len+1]>0)c.len++;}
		return c;
	}
	//高精度除低精度
	HA operator/(const int &k)const{HA c;
		long long rem=0;
		for (int i=len;i>=1;i--){
			rem=rem*10+v[i];c.v[i]=rem/k;rem%=k;
			if(c.v[i]>0&&c.len==0)c.len=i;//找到最高位
		}
		return c;
	}
	//高精度除低精度
	HA operator%(const int &k)const{HA c=this->cpy();return(c-((c/k)*k));}
	//高精度bool运算
	bool operator==(const HA &b)const{
		if(len!=b.len)return 0;
		for (int i=1;i<=len;i++)if(v[i]!=b.v[i])return 0;
		return 1;
	}
	bool operator!=(const HA &b)const{HA c=this->cpy();return!(c==b);}
	bool operator>(const HA &b)const{
		if(len!=b.len)return len>b.len;
		for(int i=len;i>=1;i--)if(v[i]!=b.v[i])return(v[i]>b.v[i]);
		return 0;
	}
	bool operator>=(const HA &b)const{HA c=this->cpy();return(c==b||c>b);}
	bool operator<(const HA &b)const{HA c=this->cpy();return !(c>=b);}
	bool operator <=(const HA &b)const{HA c=this->cpy();return !(c>b);}
};
signed main(){
   
    return 0;
}

我的世界3D方块模拟器
//Minecraft模拟器
#include<bits/stdc++.h>
using namespace std;
const char t[10][10]={
	"..+---+",
	"./   /|",
	"+---+ |",
	"|   | +",
	"|   |/.",
	"+---+.."
};
char c[1010][1010];
int n,m,a[1010][1010],K,L;
void draw(int x,int y){
	for(int i=0;i<6;i++){for(int j=0;j<7;j++){if(t[5-i][j]!='.')c[x+i][y+j]=t[5-i][j];}} //放置方块
	K=max(K,x+6);
	L=max(L,y+7); //画完方块后进行高度更新
}
signed main(){ //Minecraft
	cin>>m>>n;
	for(int i=0;i<m;i++){for(int j=0;j<n;j++)cin>>a[i][j];} //读入
	//前遮后 右遮左 上遮下
	for(int i=0;i<1000;i++)for(int j=0;j<1000;j++)c[i][j]='.';
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			for(int k=0;k<a[i][j];k++){
				int x,y;//找到左下角坐标
				x=3*k+2*(m-i-1);
				y=4*j+2*(m-i-1);
				draw(x,y);//画方块
			}
		}
	}
	for(int i=K-1;i>=0;i--){
		for(int j=0;j<L;j++){cout<<c[i][j];}
		cout<<endl;
	}
	return 0;
}

跨年倒计时
#include<bits/stdc++.h>
#include<windows.h>
#include<io.h>
#include<conio.h>
using namespace std;
#define int long long
#define mi 659
#define do1 1046
#define cls system("cls")
#pragma GCC optimize(2,3,"Ofast","inline")
const int N=1e4+10;
int Ye,Mo,Da,Ho,Mi,Se,cnt,dm[999];
int n,s,ln,col;
string sn;
string ts(int x){return to_string(x);}
//NOTE:[0-黑 1-蓝 2-绿 3-浅绿 4-红 5-紫 6-黄 7-白 8-灰 9-淡蓝 10-淡绿 11-淡浅绿  12-淡红 13-淡紫 14-淡黄 15-亮白]
void print(string str,WORD color){ //彩色字
    HANDLE handle=::GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO info;
    GetConsoleScreenBufferInfo(handle,&info);
    WORD colorBak=info.wAttributes;
    SetConsoleTextAttribute(handle, color);
    for(int i=0;i<(int)str.size();i++){cout<<str[i];}
    SetConsoleTextAttribute(handle, colorBak);
}
void print_line_1(){//横线1
    for(int i=1;i<=ln;i++){
		cout<<" ";
        for(int j=1;j<=s;j++){if(sn[i]=='1'||sn[i]=='4'){cout<<" ";}else{cout<<"-";}}
		cout<<" ";
        if(i!=ln)cout<<" ";
    }
    cout<<endl;
}
void print_down_1(){//竖线1
    for(int i=1;i<=s;i++){
        for(int j=1;j<=ln;j++){
            if(sn[j]=='1'||sn[j]=='2'||sn[j]=='3'||sn[j]=='7')cout<<" ";
            else cout<<"|";
            for(int k=1;k<=s;k++)cout<<" ";
            if(sn[j]=='5'||sn[j]=='6')cout<<" ";
            else cout<<"|";
            if(j!=ln)cout<<" ";
        }
        cout<<endl;
    }
}
void print_line_2(){//横线2
    for(int i=1;i<=ln;i++){
        cout<<" ";
        for(int j=1;j<=s;j++){if(sn[i]=='0'||sn[i]=='7'||sn[i]=='1'){cout<<" ";}else{cout<<"-";}}
        cout<<" ";
        if(i!=ln)cout<<" ";
    }
    cout<<endl;
}
void print_down_2(){//竖线2
    for(int i=1;i<=s;i++){
        for(int j=1;j<=ln;j++){
            if(sn[j]=='0'||sn[j]=='2'||sn[j]=='6'||sn[j]=='8')cout<<"|";
            else cout<<" ";
            for(int k=1;k<=s;k++)cout<<" ";
            if(sn[j]=='2')cout<<" ";
            else cout<<"|";
            if(j!=ln)cout<<" ";
        }
        cout<<endl;
    }
}
void print_line_3(){//横线3
    for(int i=1;i<=ln;i++){
        cout<<" ";
        for(int j=1;j<=s;j++){if(sn[i]=='1'||sn[i]=='4'||sn[i]=='7'){cout<<" ";}else{cout<<"-";}}
        cout<<" ";
        if(i!=ln)cout<<" ";
    }
    cout<<endl;
}
void title(){
	print("------------------------------------",14);print("跨年倒计时",3);print("-------------------------------------\n",14);
}
void end(){
	print("-----------------------------------------------------------------------------------",14);
}
void rget(){
	time_t now=time(NULL);
	tm *tm_t=localtime(&now);
	Ye=tm_t->tm_year+1900;
	Mo=tm_t->tm_mon+1;
	Da=tm_t->tm_mday;
	Ho=tm_t->tm_hour;
	Mi=tm_t->tm_min;
	Se=tm_t->tm_sec;
}
bool isl(int x){
	if(x%100!=0&&x%4==0)return 1;
	if(x%100==0&&x%400==0)return 1;
	return 0;
}
int thisYD,thisD;
void init(){
	thisYD=365+isl(Ye);
	dm[1]=31,dm[2]=28+isl(Ye),dm[3]=31,dm[4]=30,dm[5]=31,dm[6]=30,dm[7]=31,dm[8]=31,dm[9]=30,dm[10]=31,dm[11]=30,dm[12]=31;
	thisD=Da;
	for(int i=1;i<Mo;i++)thisD+=dm[i];
}
signed main(){
	rget();
	system("title 2024to2025 跨年倒计时");
	int cnt=24*60*60-Ho*60*60-Mi*60-Se;
	while(Ye<2025){ //到2025年结束
	    title();
		rget();
		init();
		string date=ts(Ye)+"年"+ts(Mo)+"月"+ts(Da)+"日"+ts(Ho)+"时"+ts(Mi)+"分"+ts(Se)+"秒";
		string num=ts(Ye)+ts(Mo)+ts(Da)+ts(Ho)+ts(Mi)+ts(Se);
		int d[]={Ho/10,Ho%10,Mi/10,Mi%10,Se/10,Se%10};
		int m[]={Ye/1000,Ye%1000/100,Ye%100/10,Ye%10,Mo/10,Mo%10,Da/10,Da%10};
		string out_date=ts(m[0])+ts(m[1])+ts(m[2])+ts(m[3])+"年"+ts(m[4])+ts(m[5])+"月"+ts(m[6])+ts(m[7])+"日";
		out_date+=(ts(d[0])+ts(d[1])+"时"+ts(d[2])+ts(d[3])+"分"+ts(d[4])+ts(d[5])+"秒");
		string out_num=ts(m[0])+ts(m[1])+ts(m[2])+ts(m[3])+ts(m[4])+ts(m[5])+ts(m[6])+ts(m[7]);
		out_num+=(ts(d[0])+ts(d[1])+ts(d[2])+ts(d[3])+ts(d[4])+ts(d[5]));
		print("当前时间:",12);
		print(out_date+"\n",6);
		col=11;
		if(thisD>10)col=11;
		else col=199;
    	HANDLE handle=::GetStdHandle(STD_OUTPUT_HANDLE);
    	CONSOLE_SCREEN_BUFFER_INFO info;
    	GetConsoleScreenBufferInfo(handle,&info);
    	WORD colorBak=info.wAttributes;
    	SetConsoleTextAttribute(handle,col);
        s=3;
	    sn=out_num;
	    ln=sn.size();
	    sn=" "+sn;
	    print_line_1();
	    print_down_1();
	    print_line_2();
	    print_down_2();
	    print_line_3();
	    SetConsoleTextAttribute(handle, colorBak);
	    cnt=thisYD*24*60*60-(thisD-1)*24*60*60-Ho*60*60-Mi*60-Se;
	    if(cnt<0)cnt=0;
	    int cd[]={(cnt/(24*60*60))/100,(cnt/(24*60*60))%100/10,(cnt/(24*60*60))%10,(cnt%(24*60*60)/(60*60))/10,(cnt%(24*60*60)/(60*60))%10,(cnt%(60*60)/60)/10,(cnt%(60*60)/60)%10,(cnt%60)/10,(cnt%60)%10};
	    print("------------------------",14);
	    print("距离2025年还有"+ts(cd[0])+ts(cd[1])+ts(cd[2])+"天"+ts(cd[3])+ts(cd[4])+"小时"+ts(cd[5])+ts(cd[6])+"分钟"+ts(cd[7])+ts(cd[8])+"秒",9);
	    print("------------------------\n",14);
		if(cnt!=0)col=11;
		else col=199;
    	handle=::GetStdHandle(STD_OUTPUT_HANDLE);
    	GetConsoleScreenBufferInfo(handle,&info);
    	colorBak=info.wAttributes;
    	SetConsoleTextAttribute(handle,col);
        s=3;
	    sn="00000"+ts(cd[0])+ts(cd[1])+ts(cd[2])+ts(cd[3])+ts(cd[4])+ts(cd[5])+ts(cd[6])+ts(cd[7])+ts(cd[8]);
	    ln=sn.size();
	    sn=" "+sn;
	    print_line_1();
	    print_down_1();
	    print_line_2();
	    print_down_2();
	    print_line_3();
	    SetConsoleTextAttribute(handle, colorBak);
	    if(cnt<10){
	    	end();
			print("\n"+ts(cnt/10)+ts(cnt%10)+"!",199);
			Beep(mi,100);Sleep(900);
			cls;
			continue;
		}
	    end();
		Sleep(1000);cls;
	}
	Beep(do1,1000);
	print("\n--------------------------------",14);print("再见2024,你好2025!",11);print("---------------------------------",14);
    return 0;
}

有什么想说的?由此进入讨论区