已知有三个整数,他们的和小于50,每两个数的和分别是K+20 K+15和K+31,其中K是一个两位数,求K。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知有三个整数,他们的和小于50,每两个数的和分别是K+20 K+15和K+31,其中K是一个两位数,求K。相关的知识,希望对你有一定的参考价值。
已知有三个整数,他们的和小于50,每两个数的和分别是K+20 K+15和K+31,其中K是一个两位数,求K
即a+b=k+20b+c=k+15
c+a=k+31
相加
2(a+b+c)=3k+66
因为a+b+c<50
所以2(a+b+c)<100
3k+66<100
3k<34
k<34/3=11+1/3
所以k=10或11
又a,b,c是整数
所以2(a+b+c)是偶数
所以3k+66是偶数,所以3k是偶数
所以k是偶书
所以k=10 参考技术A 每两个数的和分别是K+20 K+15和K+31
他们的和小于50
所以(K+20)+(K+15)+(K+31)<100 [把每两个数的和全加起来,三个整数就加了两次,应该小于100]
K<(34/3)
其中K是一个两位数 所以 K可以取两个数值
10 ,11.
或则11
代入检验当 K为10 三个整数是 23,18,7
代入检验当 K为11 三个数 23.5 7.5 18.5(不符合题意)
综合上面的 K=10 参考技术B 先来看看每两数之和与三个数之和的关系
假设有三个数a,b,c
每两数之和为a+b,b+c,a+c
三数之和为a+b+c
可以得出a+b+c=1/2[(a+b)+(b+c)+(a+c)]
再看这题,
三数之和就是1/2(k+20+k+15+k+31)=1/2(3k+66)
则1/2(3k+66)<50
3k/2<17
k<34/3<12
又因为k是两位数,故k=10 或11
有道理,k应该是偶数,k=10
我不是他舅解释的非常清楚了 参考技术C 设三个数为a、b、c
则a+b+c<50
(a+b)+(b+c)+(a+c)=(K+20 )+(K+15)+(K+31)
得a+b+c=3/2K+33
因为a+b+c<50,即3/2K+33<50,k<11.33
2(a+b+c)=3k+66是偶数
k是两位数,所以k是10 参考技术D K+20+K+15+K+31=3K+66<50*2;
K<34/3;
因为K为两位数;
K可能为10或11;
当k=10时;
K+20=30;
K+15=25;
K+31=41;
三个数分别为23,7 ,18;
当k=11时;
K+20=31;
K+15=26;
K+31=42;
三个数分别为23.5,7.5,18.5;
因为三个数都为整数;
所以k=10
和为S的两个数字
题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。
思路:两个数的和一定,差越小,乘积越大;差越大,乘积越小。
两个数的乘积一定,差越小,和越小。
证明:已知x+y=c,求x*y的最小值。
x*y=x*(c-x)=-x^2+cx = -(x-c/2)^2+c^2/4。由此可见,当x越接近c/2时,乘积越大,此时y也越接近c/2。所以两者相近越小时,乘积越大,逆否命题为两者相近越大时,乘积越小。
ublic ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> list = new ArrayList<>(); int num1=0; int num2 = 0; int aHead = 0; int end = array.length-1; while(aHead<end){ int temp = array[aHead]+array[end]; if(temp>sum){ end--; }else if(temp<sum){ aHead++; }else{ num1 = array[aHead]; num2 = array[end]; break; } } if(aHead<end){ list.add(num1); list.add(num2); } return list; }
以上是关于已知有三个整数,他们的和小于50,每两个数的和分别是K+20 K+15和K+31,其中K是一个两位数,求K。的主要内容,如果未能解决你的问题,请参考以下文章
c语言程序设计. 由键盘输入两个整数,分别计算这两个数的和、差、积、商,并输出结果。