谁帮忙“空格化”一下,给解决方案

#define Code using
#define by namespace
#define stringdp100005 std
#include<bits/stdc++.h>
#define int long long
Code by stringdp100005;
const int mod=1e9+7,modd=1e9+6;
class Matrix{
	private:
		int row,col;
		int **val;
	public:
		Matrix(int x,int y){
			row=x,col=y;
			val=new int*[row];
			for(int i=0;i<row;i++)
				val[i]=new int[col];
		}
		void clear(){
			for(int i=0;i<row;i++){
				for(int j=0;j<col;j++){
					val[i][j]=0;
				}
			}
		}
		void setIdentity(){
			if(row!=col){
				cerr<<"[Error]The rows and columns of this matrix are not equal";
				return ;
			}
			clear();
			for(int i=0;i<row;i++){
				val[i][i]=1;
			}
		}
		int getVal(int x,int y){
			return val[x][y];
		}
		void changeVal(int x,int y,int v){
			val[x][y]=v;
		}
		istream& inputVal(istream& in,int x,int y){
			in>>val[x][y];
			return in;
		}
		friend Matrix operator +(Matrix n,Matrix m){
			if(n.row!=m.row||n.col!=m.col){
				cerr<<"[Error]The rows and columns of these two matrixes are not equal.";
			}
			Matrix res=Matrix(n.row,n.col);
			for(int i=0;i<res.row;i++){
				for(int j=0;j<res.col;j++){
					res.val[i][j]=n.val[i][j]+m.val[i][j];
				}
			}
			return res;
		}
		friend Matrix plusMod(Matrix n,Matrix m){
			if(n.row!=m.row||n.col!=m.col){
				cerr<<"[Error]The rows and columns of these two matrixes are not equal.";
			}
			Matrix res=Matrix(n.row,n.col);
			for(int i=0;i<res.row;i++){
				for(int j=0;j<res.col;j++){
					res.val[i][j]=(n.val[i][j]+m.val[i][j])%mod;
				}
			}
			return res;			
		}
		friend Matrix operator *(int n,Matrix m){
			Matrix res=Matrix(m.row,m.col);
			for(int i=0;i<res.row;i++){
				for(int j=0;j<res.col;j++){
					res.val[i][j]=n*m.val[i][j];
				}
			}
			return res;
		}
		friend Matrix numMod(int n,Matrix m){
			Matrix res=Matrix(m.row,m.col);
			for(int i=0;i<res.row;i++){
				for(int j=0;j<res.col;j++){
					res.val[i][j]=n*m.val[i][j]%mod;
				}
			}
			return res;
		}
		friend Matrix operator *(Matrix n,Matrix m){
			if(n.col!=m.row){
				cerr<<"[Error]The columns of the matrix N are not equal to the rows of the matrix M.";
			}
			Matrix res=Matrix(n.row,m.col);
			res.clear();
			for(int i=0;i<n.row;i++){
				for(int j=0;j<m.col;j++){
					for(int k=0;k<n.col;k++){
						res.val[i][j]+=n.val[i][k]*m.val[k][j];
					}
				}
			}
			return res;
		}
		friend Matrix mulMod(Matrix n,Matrix m){
			if(n.col!=m.row){
				cerr<<"[Error]The columns of the matrix N are not equal to the rows of the matrix M.";
			}
			Matrix res=Matrix(n.row,m.col);
			res.clear();
			for(int i=0;i<n.row;i++){
				for(int j=0;j<m.col;j++){
					for(int k=0;k<n.col;k++){
						res.val[i][j]=(res.val[i][j]+n.val[i][k]*m.val[k][j]%mod)%mod;
					}
				}
			}
			return res;
		}
		friend Matrix operator ^(Matrix n,int m){
			Matrix res=Matrix(n.row,n.row);
			res.setIdentity();
			while(m){
				if(m&1) res=res*n;
				n=n*n;
				m>>=1;
			}
			return res;
		}
		friend Matrix powMod(Matrix n,int m){
			Matrix res=Matrix(n.row,n.row);
			res.setIdentity();
			while(m){
				if(m&1) res=mulMod(res,n);
				n=mulMod(n,n);
				m>>=1;
			}
			return res;
		}
		friend istream& operator >>(istream& in,Matrix m){
			for(int i=0;i<m.row;i++){
				for(int j=0;j<m.col;j++){
					in>>m.val[i][j];
				}
			}
			return in;
		}
		friend ostream& operator <<(ostream& out,Matrix m){
			for(int i=0;i<m.row;i++){
				for(int j=0;j<m.col;j++){
					out<<m.val[i][j]<<" ";
				}
				out<<endl;
			}
			return out;
		}
};
Matrix ANS1(2,2),ANS2(2,2);
int n,m,a,b,c,d;
string sn,sm;
void init(){
	ANS1.clear(),ANS2.clear();
	ANS1.changeVal(0,0,a),ANS1.changeVal(1,0,b),ANS1.changeVal(1,1,1);
	ANS2.changeVal(0,0,c),ANS2.changeVal(1,0,d),ANS2.changeVal(1,1,1);
}
signed main(){
	cin>>sn>>sm>>a>>b>>c>>d;
	int lenn=sn.size(),lenm=sm.size();
	for(int i=0;i<lenn;i++){
		if(a==1) n=(n*10+sn[i]-'0')%mod;
		else n=(n*10+sn[i]-'0')%modd;
	}
	for(int i=0;i<lenm;i++){
		if(c==1) m=(m*10+sm[i]-'0')%mod;
		else m=(m*10+sm[i]-'0')%modd;
	}
	init();
	ANS1=mulMod(powMod(mulMod(powMod(ANS1,m-1),ANS2),n-1),powMod(ANS1,m-1));
	cout<<(ANS1.getVal(0,0)+ANS1.getVal(1,0))%mod;
	return 0;
}

代码很长,辛苦一下~

你发给 AI 就好了

@陈俊哲 等一下这怎么是 zlf 的代码?@stringdp100005

Code by stringdp100005;

炸裂。

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 1e9 + 7, modd = 1e9 + 6;
class Matrix {
	private:
		int row, col;
		int **val;
	public:
		Matrix(int x, int y) {
			clear();
			row = x, col = y;
			val = new int*[row];
			for (int i = 0; i < row; i++)
				val[i] = new int[col];
		}
		void clear() {
			for (int i = 0; i < row; i++) {
				for (int j = 0; j < col; j++) {
					val[i][j] = 0;
				}
			}
		}
		void setIdentity() {
			if (row != col) {
				cerr << "[Error]The rows and columns of this matrix are not equal";
				return ;
			}
			clear();
			for (int i = 0; i < row; i++) {
				val[i][i] = 1;
			}
		}
		int getVal(int x, int y) {
			return val[x][y];
		}
		void changeVal(int x, int y, int v) {
			val[x][y] = v;
		}
		friend Matrix operator *(int n, Matrix m) {
			Matrix res = Matrix(m.row, m.col);
			for (int i = 0; i < res.row; i++) {
				for (int j = 0; j < res.col; j++) {
					res.val[i][j] = n * m.val[i][j];
				}
			}
			return res;
		}
		friend Matrix mulMod(Matrix n, Matrix m) {
			if (n.col != m.row) {
				cerr << "[Error]The columns of the matrix N are not equal to the rows of the matrix M.";
			}
			Matrix res = Matrix(n.row, m.col);
			res.clear();
			for (int i = 0; i < n.row; i++) {
				for (int j = 0; j < m.col; j++) {
					for (int k = 0; k < n.col; k++) {
						res.val[i][j] = (res.val[i][j] + n.val[i][k] * m.val[k][j] % mod) % mod;
					}
				}
			}
			return res;
		}
		friend Matrix powMod(Matrix n, int m) {
			Matrix res = Matrix(n.row, n.row);
			res.setIdentity();
			while (m) {
				if (m & 1) res = mulMod(res, n);
				n = mulMod(n, n);
				m >>= 1;
			}
			return res;
		}
};
Matrix ANS1(2, 2), ANS2(2, 2);
int n, m, a, b, c, d;
string sn, sm;
void init() {
	ANS1.changeVal(0, 0, a), ANS1.changeVal(1, 0, b), ANS1.changeVal(1, 1, 1);
	ANS2.changeVal(0, 0, c), ANS2.changeVal(1, 0, d), ANS2.changeVal(1, 1, 1);
}
signed main() {
	cin >> sn >> sm >> a >> b >> c >> d;
	int lenn = sn.size(), lenm = sm.size();
	for (int i = 0; i < lenn; i++) {
		if (a == 1) n = (n * 10 + sn[i] - '0') % mod;
		else n = (n * 10 + sn[i] - '0') % modd;
	}
	for (int i = 0; i < lenm; i++) {
		if (c == 1) m = (m * 10 + sm[i] - '0') % mod;
		else m = (m * 10 + sm[i] - '0') % modd;
	}
	init();
	ANS1 = mulMod(powMod(mulMod(powMod(ANS1, m - 1), ANS2), n - 1), powMod(ANS1, m - 1));
	cout << (ANS1.getVal(0, 0) + ANS1.getVal(1, 0)) % mod;
	return 0;
}

顺便帮你把防抄袭去掉了

image

@陈俊哲 在这个网站粘贴代码,点那个小棒子就可以一键格式化
给个解决方案呗
十分实用的

nb!

授人以鱼不如授人以渔

给了

哈哈,就是!
我从来没写过这么长的代码,看到了想格式化一下,觉得看起来很解压。

所以到底为什么要用zlf代码啊

我最长就70多行。

不是抄袭,题都不知道是啥。

估计是楼主抄袭了缺省源(?)

不过这个解决方案好水呀(

不应该给 @stringdp100005

emmm…

要不这样吧,谁解决这道题给谁:
mmh去S市参加学术研讨会,会议结束后Smmh决定要给他的k个门徒一人带一份伴手礼回来。

Smmh来到了当地最大的集市上,从集市入口到出口一共按顺序摆了n个摊位。咱们把n个摊位看成一条坐标轴,第i个摊位的位置坐标在xi上,而集市的出口的坐标在xend上。

带着伴手礼行走是需要消耗体力的,如果Smmh身上有a份伴手礼,没走一个格就要消耗a * a的体力,走d格则消耗d * a * a的体力。

每个摊位的伴手礼的价格为ci,库存为fi。Smmh可以沿途在任何一个摊位购买不超过当前摊位库存量的伴手礼。

Smmh作为书生,体力实在有限,钱财也实在有限,因此Smmh既想省钱又想省力。你能不能帮助Smmh计算出,在购买满k份伴手礼到达出口的前提下,让体力消耗+钱财消耗的和尽量小,这个最小值为多少?

输入描述

第一行三个整数k,xend,n。
接下来n行,每行三个整数xi,fi,ci。

输出描述

输出一行一个整数,表示最小的体力消耗+钱财消耗之和。

样例1

输入复制

2 5 3 3 1 2 4 1 2 1 1 1

输出

9

提示

样例解释
在位置3和4的摊位各购买一个伴手礼,总钱财消耗为4,总体力消耗为1+2*2=5。

数据范围
对于50%的数据1<=k<=500,1<=n<=100,1<=xi<=xend<=100,1<=ci<=10^4,1<=fi<=500。
对于100%的数据1<=k<=10^4,1<=n<=500,1<=xi<=xend<=500,1<=ci<=10^6,1<=fi<=10000。