zzuli oj 1105 友好数对

题意描述:
输入两个正整数m和n,顺序输出m到n之间的所有友好数对。
如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的。例如:1184和1210是友好数对
解题思路:
编写函数计算出m-n每个整数的所有正因子之和,然后利用函数算出该因子和的因子和是否等于该数本身,输出原整数与其因子和。
代码实现:

 1 #include<stdio.h>
 2 int facsum(int n)
 3 {
 4     int i,sum=0;
 5     for(i=1;i<n;i++)
 6     {
 7         if(n%i==0)sum+=i;
 8     }
 9     return sum;
10 }
11 int main()
12 {
13     int m,n,i,k=0,find=0,t=0;
14     scanf("%d%d",&m,&n);
15     for(i=m;i<=n;i++)
16     {
17         t=facsum(i);
18         if(facsum(t)==i&&t>i)
19         {
20             find=1;
21             printf("%d %d\n",i,t);
22         }
23     }
24     if(find==0)printf("No answer\n");
25     return 0;
26 }

易错分析:
没有准确理解数组应用,和友好数对的真正含义,大费周章,造成了不必要的杂乱。

原文地址:https://www.cnblogs.com/yuanqingwen/p/10351758.html

时间: 2024-11-11 22:19:04

zzuli oj 1105 友好数对的相关文章

zzuli oj 1167逆转数(指针专题)

Description 任意给你一个整数,这个数可能很大(最长不超过100位),你能求出它的逆转数吗?  逆转数定义如下:  1.一个末尾没有0的整数,它的逆转数就是各位数字逆序输出:  2.一个负数的逆转数仍是负数:  3.一个末尾有0的整数,它的逆转数如同下例:  reverse (1200) = 2100  reverse (-56) = -65  要求定义并使用如下函数:  void reverse(char *str)  {  //函数求出str的逆转数并存入str.  } Input

1105 判断友好数对

题目来源:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1105Description输入两个正整数m和n,顺序输出m到n之间的所有友好数对.如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的.例如:1184和1210是友好数对,因为 1184的因子之和为1+2+4+8+16+32+37+74+148+296+592=1210 1210的因子之和为1+2+5+10+11+22+55+110+121+242+605=1

1105: 判断友好数对(函数专题)

题目描述 输入两个正整数m和n,顺序输出m到n之间的所有友好数对. 如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的.例如:1184和1210是友好数对,因为 1184的因子之和为1+2+4+8+16+32+37+74+148+296+592=1210 1210的因子之和为1+2+5+10+11+22+55+110+121+242+605=1184 要求程序定义一个facsum ()函数和一个main()函数,facsum ()函数计算并返回n的所有正因子之和,其余

[coci2011]友好数对 容斥

无趣的小x在玩一个很无趣的数字游戏.他要在n个数字中找他喜欢友好数对.他对友好数对的定义是:如果有两个数中包含某一个以上相同的数位(单个数字),这两个数就是友好数对.比如:123和345 就是友好数对,因为都包含数位3,显然123和234也是由号数对.而12和34则不是友好数对,因为它们没有相同的数位. 刚拿到题没怎么读懂,因为我直观的想法是存一下扫一遍就行了,后来一想,得用容斥:又犯蠢了: 其实这道题的容斥比较基本,看代码吧: #include<iostream> #include<c

蓝桥杯 算法训练 ALGO-117 友好数

算法训练 友好数 时间限制:1.0s   内存限制:256.0MB 问题描述 有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的.例如: 9的约数和有:1+3=4 4的约数和有:1+2=3 所以9和4不是友好的. 220的约数和有:1 2 4 5 10 11 20 22 44 55 110=284 284的约数和有:1 2 4 71 142=220 所以220和284是友好的. 编写程序,判断两个数是否是友好数. 输入格式 一行,两个整数,由空格分隔 输出格式 如

【数论】【枚举约数】【友好数】CODEVS 2632 非常好友

O(sqrt(n))枚举约数,根据定义暴力判断友好数. 1 #include<cstdio> 2 #include<cmath> 3 using namespace std; 4 int n; int limit; 5 int main() 6 { 7 scanf("%d",&n); 8 for(;;n++) 9 { 10 limit=sqrt(n); int tot=1; 11 if(limit*limit==n) tot+=limit; 12 for

友好数对

题意描述:输入两个正整数m和n,顺序输出m到n之间的所有友好数对. 如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的.例如:1184和1210是友好数对解题思路:编写函数计算出m-n每个整数的所有正因子之和,然后利用函数算出该因子和的因子和是否等于该数本身,输出原整数与其因子和.代码实现:#include<stdio.h>int facsum(int n){  int i,sum=0; for(i=1;i<n;i++) {  if(n%i==0)sum+=i

zzuli oj 1134 字符串转换

题目链接: https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1134 Description 输入一个以回车结束的字符串,它由数字和字母组成,请过滤掉所有非数字字符,然后将数字字符串转换成十进制整数后乘以2输出. Input 输入一个以回车结束的字符串,长度不超过100,由数字和字母组成. Output 将转换后的整数乘以2输出,测试数据保证结果在int范围内. Sample Input sg987aa65t498 Sample Output 1

zzuli oj 1135 算菜价

题目: Description 妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐.现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵. Input 输入含有一些数据组,每组数据包括菜种(不含空格的字串),数量w(计量单位不论,一律为double型数)和单价p(double型数,表示人民币元数),因此,每组数据的菜价就是数量乘上单价啊.菜种.数量和单价之间都有空格隔开的. Output 支付菜价的时候,由于最小支付单位是角,所以总是在支付的时候采用四舍