求助!蒟蒻刚学c++,不会dp,纯找规律只过了9个点
  • 板块P2841 A*B Problem
  • 楼主Wastirnd
  • 当前回复17
  • 已保存回复17
  • 发布时间2022/12/11 12:57
  • 上次更新2023/10/24 08:00:20
查看原帖
求助!蒟蒻刚学c++,不会dp,纯找规律只过了9个点
691516
Wastirnd楼主2022/12/11 12:57

P2841 A*B Problem

#include<bits/stdc++.h>
using namespace std; 
int main(){
	long long a,b=0,i,j,d=0,s,c,s2,s1;
	cin>>a;
	if(a==1){
		cout<<1<<" "<<a;
		return 0;
	}s=a;
	s1=0;
	while(s>0){
			c=s%10;
			s/=10;
			if(c==9){
				s1++;
			}
		}
	s=a;
	s2=0;
	while(s>0){
		s2++;
		s/=10;
	}
	d=0;
	if(s1==s2){
		for(i=1;i<=7;i++){
			for(j=1;j<=s1;j++){
				cout<<i;
			}}
			for(j=1;j<=s1-1;j++){
				cout<<8;
			}
			cout<<9;
		
		cout<<" ";
		for(i=1;i<=s1;i++){
			cout<<"111111111";
		}
		return 0;
	}
	s=a;
	s1=0;
	s=a;
	s2=0;
	while(s>0){
		s2++;
		s/=10;
	}
	d=0;
	while(s>0){
			c=s%10;
			s/=10;
			d++;
			if(c==9&&d==1||c==9&&d==s2){
				s1++;
			}
		}
	
if(s1==s2){
		for(i=1;i<=7;i++){
			for(j=1;j<=s1;j++){
				cout<<i;
			}}
			for(j=1;j<=s1-1;j++){
				cout<<8;
			}
			cout<<9;
		cout<<" ";
		for(i=1;i<=s1;i++){
			cout<<"111111111";
		}
		return 0;
	}	s=a;
	s1=0;
	while(s>0){
			c=s%10;
			s/=10;
			if(c==6){
				s1++;
			}
		}
	s=a;
	s2=0;
	while(s>0){
		s2++;
		s/=10;
	}
	d=0;
	if(s1==s2){
		cout<<1;
			for(j=1;j<=s1-1;j++){
				cout<<6;
			}
			cout<<8;
			for(j=1;j<=s1-1;j++){
				cout<<3;
			}
			cout<<5<<" ";
			for(j=1;j<=s1;j++){
				cout<<111;
			}
		return 0;
	}
	s=a;
	s1=0;
	while(s>0){
			c=s%10;
			s/=10;
			if(c==5){
				s1++;
			}
		}
	s=a;
	s2=0;
	while(s>0){
		s2++;
		s/=10;
	}
	d=0;
	if(s1==s2){
		cout<<5<<" ";
		for(i=1;i<=s2;i++){
			cout<<1;
		}
		cout<<0;
		return 0;
	}s=a;
	s1=0;
	while(s>0){
			c=s%10;
			s/=10;
			if(c==4){
				s1++;
			}
		}
	s=a;
	s2=0;
	while(s>0){
		s2++;
		s/=10;
	}
	d=0;
	if(s1==s2){
		cout<<25<<" ";
		for(i=1;i<=s2;i++){
			cout<<1;
		}
		cout<<00;
		return 0;
	}s=a;
	s1=0;
	while(s>0){
			c=s%10;
			s/=10;
			if(c==2){
				s1++;
			}
		}
	s=a;
	s2=0;
	while(s>0){
		s2++;
		s/=10;
	}
	d=0;
	if(s1==s2){
		cout<<5<<" ";
		for(i=1;i<=s2;i++){
			cout<<1;
		}
		cout<<0;
		return 0;
	}
	
	s=a;
	s1=0;
	while(s>0){
			c=s%10;
			s/=10;
			if(c==8){
				s1++;
			}
		}
	s=a;
	s2=0;
	while(s>0){
		s2++;
		s/=10;
	}
	d=0;
	if(s1==s2){
		cout<<"125 ";
		for(i=1;i<=s1;i++)
		  cout<<1;
		cout<<"000";
		return 0;
	}
	s=a;
	s1=0;
	while(s>0){
			c=s%10;
			s/=10;
			if(c==9){
				s1++;
			}
		}
	s=a;
	s2=0;
	while(s>0){
		s2++;
		s/=10;
	}
	d=0;
	if(s1==s2){
		cout<<"3";
		for(i=1;i<=s1-1;i++){
			cout<<"3";
		}
		for(i=1;i<=s1-1;i++){
			cout<<"6";
		}
		cout<<"7 ";
			for(j=1;j<=s1;j++){
				cout<<"111";
			}
		return 0;
	}
	for(i=2;i<=a*a*a;i++){
		s1=0;
		b++;
		s=b*a;
		while(s>0){
			c=s%10;
			s/=10;
			if(c==0||c==1){
				s1++;
			}
		}
		s=b*a;
		s2=0;
		while(s>0){
			s2++;
			s/=10;
		}
		if(s1==s2){
			cout<<b<<" "<<a*b<<endl;
			return 0;
		}
	}
	return 0;
}

怎么办啊啊啊

第九个点死过不去

这题几乎做了大半年

求大佬帮助!

2022/12/11 12:57
加载中...