题解 | #大整数的因子#

大整数的因子

https://www.nowcoder.com/practice/3d6cee12fbf54ea99bb165cbaba5823d

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

struct bign{
	int d[1000];
	int len;
	bign(){
		memset(d,0,sizeof(d));
		len=0;
	}
};

bign change(char str[]){   //将大数转换为bign型存储 
	bign a;
	a.len=strlen(str);
	for(int i=0;i<a.len;i++){   //交换高低位 
		a.d[i]=str[a.len-1-i]-'0';   // 交换高低位 常用代码,记住 
	}
	return a;
}


bign divide(bign a,int b,int &r){  //表示a/b,r是余数 
	bign c;                        //c是商,位数先和被除数定义为一样
	c.len=a.len;
	//开始除 
	for(int i=a.len-1;i>=0;i--){
		r=r*10+a.d[i];  //余数先和上一位遗留的余数组合 
		if(r<b){
			c.d[i]=0;  //不够除,该位为0 
		}
		else{        //够除 
			c.d[i]=r/b;   //商 
			r=r%b;        //获得的新余数 
		}
	} 
	while(c.d[c.len-1]==0 && c.len-1>=1){  //去掉高位0 
		c.len--;	//去除最高位的0,同时至少保留一位最低位。 
	} 
	return c; 
} 

int main(){
	char a[31];
	while(scanf("%s",a)!=EOF){
		if(strcmp(a, "-1") == 0){ // 使用strcmp函数比较字符串
            break;
        }
		
		bign c=change(a);  //字符串转变为大数存储 
		int count=0;
		
		for(int k=2;k<=9;k++){
			int r=0;       //余数最开始置0 
			divide(c,k,r);
			if(r==0){
				printf("%d ",k);
				count++;
			}
		}
		if(count!=0){
			cout<<endl;
		}
		if(count==0){
			printf("none\n");
		}
	}
	
	return 0; 
} 

全部评论

相关推荐

机械打工仔:不管啥专业,找工作改简历的第一课先把你那排版改了,简历上不要写个人简历四个字,找你要简历的谁不知道这个是简历?而且还占那么多空间,直接把自己名字和基础信息写上面,整体字体大一些。 还有这种经典两页简历一页大空白,导出PDF的时候多了一页几乎全是白的你自己看着不难受吗随手的事为啥不能改掉呢,这是态度问题,你试想一下你是HR你打开简历看到格式都没调整过会是什么感受?你自己都不重视你的简历,HR更不会在意。 然后内容你那个做两年咖啡就别往里写了,简历在精不在多,你在往你的简历里打字的时候就要想好这东西对你要找的工作有没有帮助。自我评价写一行就行了,不如给专业技能单开一栏。核心课程均分90这个真别写了,把你上过的有用的专业课列出来也行。有很多地方废话很多的精炼一下,比如你校内项目第一个写的那些,全然没有重点。 好好修改一下,我看你内容也挺优秀的,别被一个随便做的简历耽误了,我一个同专业的打工人看了都揪心更别说一天看几百份简历的HR
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务