已知有三个整数,他们的和小于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+20
b+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语言程序设计. 由键盘输入两个整数,分别计算这两个数的和、差、积、商,并输出结果。

Python分两行输入两个正整数输出两个数的和差怎么写?

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。

[模板]树状数组

CDQ分治

树状数组模板1