博主:命运之光
专栏:算法修炼之练气篇
题目1157: 亲和数
这道题很简单,我写的也很简单,看一眼就懂
题目描述
古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:
1+2+4+5+10+11+20+22+44+55+110=284。
而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。
你的任务就编写一个程序,判断给定的两个数是否是亲和数
分析
这道题主要就是要读懂什么是真约数。
所为真约数举个例子就是约束不包含自己本身
例:
比如6的约数是1、2、3、6
而真约数是1、2、3
约束算法
for (i=2; i<=num; i++)//真约束就把i<=num改为i<num即可{ if (num%i==0) { printf("%d", i); } else { continue; } }
下面就改一改将输出所有约束改为累加所有约束
for(i=1;i<num;i++) { if(num%i==0) { sum=sum+i;//累加所有真约束和 } else { continue; } }
整理
intmain() { inti,M,sum=0; intA,B; scanf("%d",&M); while(M--) { scanf("%d %d",&A,&B); for(i=1;i<A;i++) { if(A%i==0) { sum=sum+i; } else { continue; } } if(sum==B) { printf("YES\n"); } else { printf("NO\n"); } sum=0; } return0; }
题目 1687: 数据结构-字符串连接
将给定的字符串连接起来。书中的算法描述如下:
图:字符串连接算法
输入格式
三对字符串,每对字符串占一行,用空格隔开。每个字符串只包含数字和英文字母大小写且长度不超过100。
输出格式
将后一个字符串连接到前一个字符串后面,如果结果字符串长度超过100,输出一行“Result String is cutted.”否则将结果字符串输出来。
样例输入
hello dotcpp 123 456 doyour best
样例输出
hellodotcpp 123456 doyourbest
usingnamespacestd; intmain() { strings1,s2; for(inti=0;i<3;i++) { cin>>s1>>s2; if(s1.length()+s2.length()>100) { cout<<"Result String is cutted."<<endl; } else { cout<<s1+s2<<endl; } } return0; }
题目 1477: 字符串输入输出函数
题目描述
编写函数GetReal和GetString,在main函数中分别调用这两个函数。在读入一个实数和一个字符串后,将读入的结果依次用printf输出。
两次输入前要输出的提示信息分别是" please input a number:\n”和" please input a string:\n"
输入格式
无
输出格式
无
样例输入
9.56 hello
样例输出
please input a number: please input a string: 9.56 hello
usingnamespacestd; intmain() { strings1,s2; cin>>s1>>s2; cout<<"please input a number:"<<endl; cout<<"please input a string:"<<endl; cout<<s1<<endl; cout<<s2<<endl; return0; }
题目 3012: 分苹果
题目描述
把一堆苹果分给n个小朋友,要使每个人都能拿到苹果,而且每个人拿到的苹果数都不同的话,这堆苹果至少应该有多少个?
输入格式
一个不大于1000的正整数n,代表小朋友人数。
输出格式
一个整数,表示满足条件的最少苹果个数。
样例输入
8
样例输出
36
usingnamespacestd; intmain() { intn; cin>>n; cout<<(1+n)*n/2; return0; }
题目 2772: 苹果和虫子(秒杀题,随便写)
题目描述
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?
输入格式
输入仅一行,包括n,x和y(均为整数)。输入数据保证y <= n * x。
输出格式
输出也仅一行,剩下的苹果个数。
样例输入
10 4 9
样例输出
7
提示
注意:是要求完整的苹果数。
usingnamespacestd; intmain() { intn,x,y; cin>>n>>x>>y; inta,b; a=y/x; b=y%x; if(b!=0) { a=a+1; } cout<<n-a; return0; }