⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zy2_big_problem.cpp

📁 大整数问题 设n是一个k(1≤k≤80)位的十进制正整数。 问题1:对于给定的任意整数n
💻 CPP
字号:

#include "cyio.h"
#include "BigNum_c.h"
class BigProblem{
public:
	ifstream in;
	ofstream out;
	vector<long> m;

	BigProblem(char* inf,char* outf){
		in.open(inf);
		out.open(outf,ios::out);
		
	}
	void run(){
	int k,j;
	while(!in.eof()){
		
		string num;
		getline(in,num);
		BigNum n(num);
	
		
		cout<<"n:"<<n<<endl;
		
		m=vector<long>(n.size(),(long)0);

		BigNum p((long)0);
		BigNum c((long)3);
		BigNum zero((long)0);
		BigNum one((long)1);
		BigNum two((long)2);
		BigNum sum((long)0);
		BigNum ten((long)10);
		BigNum mid,dis;
		BigNum b,e;
		b=zero;
		mid=n/two;
		p=mid;
		e=n;
		BigNum r1,r2,r3,r;
		cout<<"["<<p<<"]"<<endl;
		while(1){
		//	cout<<"p: "<<p<<endl;
			r2=p*p;
			r1=r2*p;
			r3=p*c;
			r=r1+r2+r3;
			//cout<<" r1:"<<r1<<" r2:"<<r2<<" r3:"<<r3<<endl;
		//	cout<<" r:"<<r<<endl;
			
			r=p*p*p+p*p+p*c;
			dis=e-b;
			mid=dis/two;
			cout<<"b:"<<b<<endl;;
			cout<<"e:"<<e<<endl;
			cout<<"mid:"<<mid<<endl;
			cout<<"p : "<<p<<endl;
			cout<<"r  :"<<r<<endl;
			cout<<"-----------"<<endl;
			if (dis==one) {
					p=e;
				break;
			}
			if (r<n) {
				//sum=sum+one;
				b=p;
				p=b+mid;

		
			
			}else {
				e=p;
				p=b+mid;
				
			}
		
		}
		cout<<"m : "<<m<<endl;
		cout<<" sum: "<<sum<<endl;
		cout<<" bMax : "<<p<<endl;
		BigNum x1,x2;
		x1=vector<int>(1,0);
		for (k=0;k<p.size();k++){
			if (k!=p.size()-1){
				
				x2.a=vector<int>(k+1,9);
				x2=x2-x1;
				//if (k==0) x2=x2+one;
				out<<"m= "<<k+1<<"  :"<<x2<<endl;
				x1=x2;
			}
			else{
				x1=p-x1;
				out<<"m= "<<k+1<<"  :"<<x1<<endl;
				//out<<"m= "<<k<<"  :"<<p-x1<<endl;
			}
		}
		out<<"p= "<<p<<endl;
	}
	out.close();
	}
};
int main(){
	BigProblem bp("numberX_ input.txt","numberX_out.txt");
	bp.run();

	

return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -