有5个各不相同的正整数,从小到大,和是135,后一个是前一个整数倍,求这5个数

菜菜一枚,请问大神为什么我的程序会运行异常呢

/*有5个各不相同的正整数,他们的和是135, 且按照从小到大的顺序,后面一个数是前面一个数的 整数倍,编写程序求这5个数。*/
#include <stdio.h>
#define N 150
int main(){
    int a,b,c,d,e;
    for(a = 0;a <= N;a++)
        for(b = 0;b <= N;b++)
            if(a != b && b > a && b % a == 0)
                for(c = 0;c <= N;c++)
                    if(c != a && c != b && c > b && c % b == 0)
                        for(d = 0;d <= N;d++)
                            if(d != a && d != b && d != c && d > c && d % c == 0)
                                for(e = 0;e <= N;e++)
                                    if(e != a && e != b && e != c && e != d
                                        && e > d && e % d == 0)
                                            if(a + b + c + d + e == 135)
                                                printf("a=%d,b=%d,c=%d,d=%d,e=%d\n",a,b,c,d,e);

    return 0;
}

8个回答

你的思路中有很多重复的地方比如a从1开始,则b只能从2开始,就是一直从a+1开始就对了,而不是每次都要从0开的

问题主要是求余%第二个数不能为0,但是你从0开始,所以会有bug

1,2,4,8,120=135

    int a,b,c,d,e;
    for (a=1;a<27;a++) {
        for (b=(2*a);b<135;b++) {
            for (c=(b*2);c<135;c++) {
                for (d=(c*2);d<135;d++) {
                    for (e=(d*2);d<135;e++) {
                        if((a+b+c+d+e)==135){
                     printf("a=%d,b=%d,c=%d,d=%d,e=%d\n",a,b,c,d,e);
                        }
                    }
                }
            }
        }
    }
u012197585
_乔 运行了下,代码貌似有点问题呢
3 年多之前 回复
u012197585
_乔 我悟性不太好,请问下为什么循环体中每个变量都等于前一个变量+1呢,为什么循环到130呢
3 年多之前 回复

麻烦问下我的思路是哪块出了问题呢

qq_29594393
当作看不见 思路有两个问题,一既然是大小不同升序,那a 最大就是小于27,你弄个150是什么鬼,后面的每一个都大于前面的,那bcd 还从0开始算,b=2a开始算啦,c=2b,效率高很多,细节没看
3 年多之前 回复

谢谢各位帮助,最后的代码整理了下,如果有需要改进的地方请再多指教

#include <stdio.h>
#include <time.h>
#define N 131
int main(){
    int a,b,c,d,e;
    clock_t s,f;
    s = clock();
    for(a = 1;a <= N;a++)
        for(b = a + 1;b <= N;b++)
            if(a != b && b > a && b % a == 0)
                for(c = b + 1;c <= N;c++)
                    if(c != a && c != b && c > b && c % b == 0)
                        for(d = c + 1;d <= N;d++)
                            if(d != a && d != b && d != c && d > c && d % c == 0)
                                for(e = d + 1;e <= N;e++)
                                    if(e != a && e != b && e != c && e != d
                                        && e > d && e % d == 0)
                                            if(a + b + c + d + e == 135)
                                                printf("a=%d,b=%d,c=%d,d=%d,e=%d\n",a,b,c,d,e);
    f = clock();
    printf("%lf",(f - s) / CLOCKS_PER_SEC);
    return 0;
} 

被那么多层for循环吓到了。
这一题既然每个数都是第一个数的整数倍,则和必然也是第一个数的整数倍,所以可以先对135作因式分解:135=5*3*3*3
所以第一个数是3或者5或者9(由于5个数各不相同,所以很容易排除第一个数是15和27,45,135的可能),之后就是把135除以第一个数之后的数字拆成5个不同的整数(第一个整数为1)之和。
(1) 第一个数为3,打印出和为45的所有5个不同的正整数组合
(2) 第一个数为5,打印出和为27的所有5个不同的正整数组合
(3) 第一个数为9,打印出和为15的所有5个不同的正整数组合,这个只有一组,就是1,2,3,4,5。对应的5个正整数为9,18,27,36,45

这道题似乎无解,后一个是前一个的整数倍,整数倍是*2?如果是那么,
假设第一个数为1,则第二数为1*2=2,第三数为2*2=4,第四数为4*2=8,第五数为8*2=16,五个数相加=31。。。无解;果后面的数是第一个数的递增整数倍,那就有解。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
“第M大数”是指从小到大的第M大,具体怎么计算采用的是C语言的程序的编写的技术的办法
Problem Description   Google的面试题向来以古怪闻名,延续自技术公司用逻辑题测试求职者的古老传统.现在我们来看看下面这题:   面试官在房间的白板上写下6个数字:     10,9,60,90,70,66   现在的问题是,接下来该出现什么数字?   想不出来了吧?不要再从数学的角度想了,把这些数字用正常的英文拼写出来:     ten(10)     nine(9)     sixty(60)     ninety(90)     seventy(70)     sixty-six(66)   我们可以惊奇的发现这些数字都是按字母的多少排序的!再仔细一看:ten(10)不是唯一一个可以用3个字母拼出的数字,还有one(1),two(2),six(6);nine(9)也不是唯一一个用4个字母拼出的数字,还有zero(0),four(4)和five(5).而题目中的数字,每一个都是用给定长度的字母拼写出来的数字里最大的一个!   现在我们回到原题:接下去该是哪个数字呢?   我们注意到,66对应的字母长度为8(特别提醒:连接符不算在内),不管之后跟着哪个数,它都应该有9个字母,而且应该是9个字母拼出的数字里最大的。仔细找一下,你可能就会得出ninety-six(96)。不可能是100以上的数字,因为它会以one hundred开头,这已经有10个字母了。   对于Google面试官来说,96只不过是可以接受的答案之一,另一个更好的回答是:   100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   也就是10的101次方,即:ten googol(有关Googol的资料可以在wiki中了解)。据说当年Google这个名字的创建也是由googol演化过来的(江湖传说肖恩拼写时老爱出错,本来想注册googol或者googolplex,结果由于手误就注册了google)。   好了,当你解出了这道难题,面试官的下一道题目接踵而至——给你两个正整数N和M,要求你输出由N个字母组成的第M大数(我们只考虑0~99和googol级别的数字)。 注意:这里所说的“第M大数”是指从小到大的第M大,具体参见Sample Input 输入数据第一行有一个数字T,代表有T组数据。 每组数字由两个正整数N和M组成。 [Technical Specification] 1<=T<=100 3<=N<=9 1<=M<=100 Output 首先输出case数(见sample),接着输出由N个字母组成的第M大数,如果没有,则输出-1。 Sample Input 6 3 1 3 2 4 1 4 2 5 1 9 100 Sample Output Case #1: 1 Case #2: 2 Case #3: 0 Case #4: 4 Case #5: 3 Case #6: -1
一张正整数组成的数表,两两相加得到n(n-1)/2个和用C语言的计算的问题
Problem Description Yanghee 是一个小学生。他的数学老师给全班同学布置了一道家庭作业,即根据 一张不超过5000的n(n<50)个正整数组成的数表,两两相加得到n(n-1)/2个和,然后把它们排序。例如,如果数表含有四个数1,3,4,9,那么正确答案是4,5,7,10,12,13。Yanghee 做完作业以后和小伙伴们出去玩了一下午,回家以后发现老师给的数表不见了,可是他算出的答案还在。你能帮助Yanghee根据他的答案计算出原来的数表吗? Input 输入第1行是1个正整数N,3<=n<50.然后有若干行,每行10个正整数,共计n(n-1)/2个数. 输入的数据有唯一解. Output 按从小到大输出n个数x[1],x[2],...,x[n],每行1个,使得任意2个数之和恰是输入的n(n-1)/2个数. Sample Input 15 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5 6 7 8 9 10 11 12 13 14 15 16 17 7 8 9 10 11 12 13 14 15 16 17 18 9 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 13 14 15 16 17 18 19 20 21 15 16 17 18 19 20 21 22 17 18 19 20 21 22 23 19 20 21 22 23 24 21 22 23 24 25 23 24 25 26 25 26 27 27 28 29 Sample Output 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
排列 的计算实现
Description 题目描述: 大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列。 任务描述: 给出某个排列,求出这个排列的下k个排列,如果遇到最后一个排列,则下1排列为第1个排列,即排列1 2 3…n。 比如:n = 3,k=2 给出排列2 3 1,则它的下1个排列为3 1 2,下2个排列为3 2 1,因此答案为3 2 1。 Input 第一行是一个正整数m,表示测试数据的个数,下面是m组测试数据,每组测试数据第一行是2个正整数n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n个正整数,是1,2 … n的一个排列。 Output 对于每组输入数据,输出一行,n个数,中间用空格隔开,表示输入排列的下k个排列。 Sample Input 3 3 1 2 3 1 3 1 3 2 1 10 2 1 2 3 4 5 6 7 8 9 10 Sample Output 3 1 2 1 2 3 1 2 3 4 5 6 7 9 8 10
Yanghee 的算术
Problem Description Yanghee 是一个小学生。他的数学老师给全班同学布置了一道家庭作业,即根据 一张不超过5000的n(n<50)个正整数组成的数表,两两相加得到n(n-1)/2个和,然后把它们排序。例如,如果数表含有四个数1,3,4,9,那么正确答案是4,5,7,10,12,13。Yanghee 做完作业以后和小伙伴们出去玩了一下午,回家以后发现老师给的数表不见了,可是他算出的答案还在。你能帮助Yanghee根据他的答案计算出原来的数表吗? Input 输入第1行是1个正整数N,3<=n<50.然后有若干行,每行10个正整数,共计n(n-1)/2个数. 输入的数据有唯一解. Output 按从小到大输出n个数x[1],x[2],...,x[n],每行1个,使得任意2个数之和恰是输入的n(n-1)/2个数. Sample Input 15 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5 6 7 8 9 10 11 12 13 14 15 16 17 7 8 9 10 11 12 13 14 15 16 17 18 9 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 13 14 15 16 17 18 19 20 21 15 16 17 18 19 20 21 22 17 18 19 20 21 22 23 19 20 21 22 23 24 21 22 23 24 25 23 24 25 26 25 26 27 27 28 29 Sample Output 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
排列 是怎么用C语言实现的
Description 题目描述: 大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列。 任务描述: 给出某个排列,求出这个排列的下k个排列,如果遇到最后一个排列,则下1排列为第1个排列,即排列1 2 3…n。 比如:n = 3,k=2 给出排列2 3 1,则它的下1个排列为3 1 2,下2个排列为3 2 1,因此答案为3 2 1。 Input 第一行是一个正整数m,表示测试数据的个数,下面是m组测试数据,每组测试数据第一行是2个正整数n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n个正整数,是1,2 … n的一个排列。 Output 对于每组输入数据,输出一行,n个数,中间用空格隔开,表示输入排列的下k个排列。 Sample Input 3 3 1 2 3 1 3 1 3 2 1 10 2 1 2 3 4 5 6 7 8 9 10 Sample Output 3 1 2 1 2 3 1 2 3 4 5 6 7 9 8 10
请问这个代码输入为什么要输入6行而且代码无效?
题目描述 将两个从小到大排列的一维数组 (维长分别为 m, n , 其中 m,n≤100) 仍按从小到大的排列顺序合并到一个新的一维数组中,输出新的数组. 输入描述 第 1 行一个正整数 m , 表示第一个要合并的一维数组中的元素个数 第 2 行一个正整数 n , 表示第二个要合并的一维数组中的元素个数 第 3 行输入 m 个整数 (每个数用空格分开) , 表示第一个数组元素的值. 第 4 行输入 n个整数 (每个数用空格分开) , 表示第二个数组元素的值. 输出描述 一行,表示合并后的数据,共 m +n 个数 样例输入 3 4 1 3 5 2 4 6 8 样例输出 1 2 3 4 5 6 8 ``` #include<stdio.h> #define N 110 #define M 110 int main () { int m,n,a[M],b[N],c[N+M],i,t,j; { scanf("%d",&m); scanf("%d",&n); for(i=0;i<m;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) scanf("%d",&b[i]); } { for(i=0;i<m+n;i++) scanf("%d",&c[i]); for(j=0;j<m+n-1;j++) for(i=0;i<m+n-j-1;i++) if(c[i]>c[i+1]) { t=c[i]; c[i]=c[i+1]; c[i+1]=t; } for(i=0;i<m+n;i++) printf("%d ",c[i]) ; } return 0; } ```
请问这个代码输入为什么要输入4行而且代码无效?
题目描述 将两个从小到大排列的一维数组 (维长分别为 m, n , 其中 m,n≤100) 仍按从小到大的排列顺序合并到一个新的一维数组中,输出新的数组. 输入描述 第 1 行一个正整数 m , 表示第一个要合并的一维数组中的元素个数 第 2 行一个正整数 n , 表示第二个要合并的一维数组中的元素个数 第 3 行输入 m 个整数 (每个数用空格分开) , 表示第一个数组元素的值. 第 4 行输入 nn个整数 (每个数用空格分开) , 表示第二个数组元素的值. 输出描述 一行,表示合并后的数据,共 m +n 个数 样例输入 3 4 1 3 5 2 4 6 8 样例输出 1 2 3 4 5 6 8 #include<stdio.h> #define N 110 #define M 110 int main () { int m,n,a[M],b[N],c[N+M],i,t,j; { scanf("%d",&m); scanf("%d",&n); for(i=0;i<m;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) scanf("%d",&b[i]); } { for(i=0;i<m+n;i++) scanf("%d",&c[i]); // printf("\n"); for(j=0;j<m+n-1;j++) for(i=0;i<m+n-j-1;i++) if(c[i]>c[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } for(i=0;i<m+n;i++) printf("%d ",c[i]) ; } return 0; }
线段处理 的实现的问题
Description 题目描述: 在平面上有许多线段,其中一些平行于y轴且在x轴上的间距相等(均为100),起始y坐标都是0,终止y坐标都是32767,称作第一类线段,把这些线段按照x坐标从小到大编号0,1 … n1-1,第二类线段与y轴不平行,而且起点和终点在不同的两条第一类线段上,两条线段最多有一个交点(没有重合或部分重合的情况),第三类线段是第二类线段被第一类线段切割所成的小线段,如下图: 任务描述: 给出所有线段的描述,求出满足以下条件的第三类线段对的个数:两个线段有在非端点处有交点。 Input 第一行是一个正整数num,表示测试数据的组数,下面是num组测试数据。 每组测试数据的第一行是两个正整数n1, n2表示第一类和第二类线段的个数(2<=n1<=16,0<=n2<32768),下面有n2行,每行描述一条第二类线段,有四个正整数k1 p1 k2 p2,k1和k2分别表示此线段的起点和终点所在的第一类线段的编号,p1和p2分别表示此线段起点和终点的y坐标(0<=p1,p1 < 32768 )。 Output 对每组测试数据输出一行,一个正整数n,表示满足条件的线段对的个数。 Sample Input 2 2 5 0 1 1 4 0 3 1 1 0 4 1 5 0 5 1 4 0 6 1 4 4 8 0 0 2 2 0 1 2 3 0 3 2 1 0 3 3 2 1 0 3 2 1 3 2 0 2 0 3 1 2 3 3 0 Sample Output 3 10
线段处理 算法程序的实现
Description 题目描述: 在平面上有许多线段,其中一些平行于y轴且在x轴上的间距相等(均为100),起始y坐标都是0,终止y坐标都是32767,称作第一类线段,把这些线段按照x坐标从小到大编号0,1 … n1-1,第二类线段与y轴不平行,而且起点和终点在不同的两条第一类线段上,两条线段最多有一个交点(没有重合或部分重合的情况),第三类线段是第二类线段被第一类线段切割所成的小线段,如下图: 任务描述: 给出所有线段的描述,求出满足以下条件的第三类线段对的个数:两个线段有在非端点处有交点。 Input 第一行是一个正整数num,表示测试数据的组数,下面是num组测试数据。 每组测试数据的第一行是两个正整数n1, n2表示第一类和第二类线段的个数(2<=n1<=16,0<=n2<32768),下面有n2行,每行描述一条第二类线段,有四个正整数k1 p1 k2 p2,k1和k2分别表示此线段的起点和终点所在的第一类线段的编号,p1和p2分别表示此线段起点和终点的y坐标(0<=p1,p1 < 32768 )。 Output 对每组测试数据输出一行,一个正整数n,表示满足条件的线段对的个数。 Sample Input 2 2 5 0 1 1 4 0 3 1 1 0 4 1 5 0 5 1 4 0 6 1 4 4 8 0 0 2 2 0 1 2 3 0 3 2 1 0 3 3 2 1 0 3 2 1 3 2 0 2 0 3 1 2 3 3 0 Sample Output 3 10
编写一个程序c++,对输入的n(n<100)本书进行排序并输出?
程序首先输入一个正整数n,然后输入n本书的信息,每本书用两行输入,第一行输入书的名称(书名最长不超过50个字符,中间可能有空格),第二行输入价格,价格为浮点数。程序要求对n本书按价格从低到高排序,如果价格相同,则按书名(字符串)字典序从小到大排序。 例如: 3 Programming in C 21.5 数据结构与算法 18.5 三体(一) 28.0 最后输出排序结果,每行输出一本书的信息,首先输出价格,然后输出书名,中间用一个英文逗号和一个空格分开。 如上面输入对应的输出结果为: 18.5, 数据结构与算法 21.5, Programming in C 28.0, 三体(一)
希望在输入时不能用到fgets,我的代码有一点问题
题目描述 已知正整数n,n的范围是1—100。你要从键盘读入n个字符串,每个字符串的长度不确定,但是n个字符串的总长度不超过100000。你要利用字符指针数组将这n个字符串按照ASCII码顺序进行升序排序,然后再打印到屏幕上。字符串中可能包含ASCII码中的任意字符,每个字符串以换行符结束输入。 要求:不允许定义如char str[100][100000];这样的二维数组,因为会极大的浪费内存空间。你应定义char str[100000];这样的存储空间,将n个字符串连续的存储在一维字符空间内,然后将这n个字符串的起始位置保存在字符指针数组中,再进行排序操作。 输入与输出要求:输入一个正整数n,代表待排序字符串的个数,n不超过100,然后是n个字符串,每个字符串的长度不确定,但至少包含1个字符。n个字符串的总长度不会超过100000。输出排序后的n个字符串,每个字符串占一行。 程序运行效果: Sample 1: 4↙ Where there is hope ,there is a way.↙ Welcome Beijing.↙ Nice idea.↙ Have fun.↙ Have fun.↙ Nice idea.↙ Welcome Beijing.↙ Where there is hope ,there is a way.↙ #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char str[100000]; int n, i, j, k, len; scanf("%d", &n); getchar();//将回车键进行储存 char *substr[100];//n个字符数组指针 char *b; k=0;//k初始化 j=0;//j初始化 for(i=0;i<n;i++)//将全部字符串存入数组str[100000]中 ,第i行 { scanf("%c", &str[j]); substr[k]=&str[j];//将每行字符的开头字符存入第k个数组指针中 while(str[j]!='\n')//每一行的字符串是以回车键结束,遇到回车键即跳出循环,换下一行 { j++; scanf("%c", &str[j]); } k++;//进入下一个数组指针 getchar();//将换行键储存 } str[j]='\0'; i=0; for(i=0;i<n-1;i++)//运用冒泡排序将其从小到大重新排序 { for(j=0;j<n-1-i;j++) { if(strcmp(substr[j],substr[j+1])>1) { strcpy(b,substr[j]); strcpy(substr[j],substr[j+1]); strcpy(substr[j+1],b); } } } for(i=0;i<n;i++) { printf("%s", substr[i]); printf("\n"); } return 0; }
线段 的计算问题
Description 题目描述: 在平面上有许多线段,其中一些平行于y轴且在x轴上的间距相等(均为100),起始y坐标都是0,终止y坐标都是32767,称作第一类线段,把这些线段按照x坐标从小到大编号0,1 … n1-1,第二类线段与y轴不平行,而且起点和终点在不同的两条第一类线段上,两条线段最多有一个交点(没有重合或部分重合的情况),第三类线段是第二类线段被第一类线段切割所成的小线段,如下图: 任务描述: 给出所有线段的描述,求出满足以下条件的第三类线段对的个数:两个线段有在非端点处有交点。 Input 第一行是一个正整数num,表示测试数据的组数,下面是num组测试数据。 每组测试数据的第一行是两个正整数n1, n2表示第一类和第二类线段的个数(2<=n1<=16,0<=n2<32768),下面有n2行,每行描述一条第二类线段,有四个正整数k1 p1 k2 p2,k1和k2分别表示此线段的起点和终点所在的第一类线段的编号,p1和p2分别表示此线段起点和终点的y坐标(0<=p1,p1 < 32768 )。 Output 对每组测试数据输出一行,一个正整数n,表示满足条件的线段对的个数。 Sample Input 2 2 5 0 1 1 4 0 3 1 1 0 4 1 5 0 5 1 4 0 6 1 4 4 8 0 0 2 2 0 1 2 3 0 3 2 1 0 3 3 2 1 0 3 2 1 3 2 0 2 0 3 1 2 3 3 0 Sample Output 3 10
语言基础练习——多组数字排序(循环)
题目描述 给定m组n个正整数,将每一组数字从小到大进行排序。 输入 输入数据有多组,每组数据占一行,每行的第一个数正整数n(1<=n<=20),表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。 输出 输出每组排序的结果。 样例输入 Copy 2 1 2 3 121 10 111 0 样例输出 Copy 1 2 10 111 121 #include <stdio.h> #define N 20 int main() { int n,i,j,t,a[N]; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); }//输入数据 for(j=0;j<n-1;j++) for(i=0;i<n-j-1;i++) { if(a[i]>a[i+1]) t=a[i+1]; a[i+1]=a[i]; a[i]=t; } for(i=0;i<n;i++) printf("%d ",a[i]); return 0; } 刚接触C没多久。 我的代码是这样的,但是达不到要求,希望能帮忙修改一下,指出哪里写的有问题,谢谢!
清橙 特殊数字3 我这样写为什么只出现五开头的数字
![图片说明](https://img-ask.csdn.net/upload/201712/02/1512196471_644402.png) 题目是这个 问题描述   123321是一个非常特殊的数,它从左边读和从右边读是一样的。   输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。 输入格式   输入一行,包含一个正整数n。 输出格式   按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例输出 899998 989989 998899 数据规模和约定   1<=n<=54。 虽然还没完成 但是解到这里很奇怪 不是很懂 ,求解答 谢谢
请教N个整数的平均数、众数和中位数
各位大佬好!萌新请教一个问题 求N个整数的平均数、众数和中位数 小知识: * 众数  出现的次数最多,即为这组数的众数。 * 中位数  将若干个数按一定的顺序(从大到小或从小到大)排列后,正中间的一个数这组数的中位数。  若正中间有两个数,中位数就是这两个数的平均数。 输入 第一行为整数N(5 <= N <= 10000 ) 第二行为空格隔开的N个数Ai(0 <= Ai <= 100 ) 输出 输出空格隔开的平均数 众数 中位数(平均数保留两位小数,中位数保留一位小数)。 样例输入 [复制] 6 5 2 2 3 4 6 样例输出 [复制] 3.67 2 3.5 提示[-] 出现次数最多的数有且只有一个。 以下是我的代码,对67%,请教错在哪里? #include<cstdio> #include<iostream> int main() { int n,i,j,t,c=1,d=1,mode,sum=0,a[10001]; double av=0,mid=0; scanf("%d",&n); for (i=1;i<=n;i++) { scanf("%d",&a[i]); sum+=a[i]; } av=sum*1.0/n; for(i=1;i<=n;i++) for(j=1;j<=n-i;j++) if(a[j]<a[j+1]) std::swap(a[j],a[j+1]); mode=a[1]; for (i=1;i<n;i++) for (j=i+1;j<=n;j++) { if(a[j]==a[i]) c++; if(c>d) mode=a[i],d=c,c=1; } i=n/2; if (n%2) mid=a[i+1]*1.0; else mid=(a[i]+a[i+1])/2.0; printf("%.2lf %d %.1lf\n",av,mode,mid); } 请教代码错在哪里,请老师指点 怀疑是在众数部分 拜谢!!
!!!!!!十万火急 C++编程 敲七问题
要求:输入一个正整数N,从小到大输出满足如下条件的整数: _是7和7的倍数 _包含7的数字。 _且输出的数字≤ N_。 例如(17,27,37...70,71,72,73...) _ 代码行数不低于200行,。各位大佬们,小弟知识浅薄实在是想不出还有啥点子了,而且时间也有些紧促了,故求助!⊙﹏⊙‖∣_
acm一道题目,关于第k个排列的问题
3:排列 查看 提交 统计 提问 总时间限制: 5000ms 内存限制: 65536kB 描述 题目描述: 大家知道,给出正整数n,则1到n这n个数可以构成n!种排列,把这些排列按照从小到大的顺序(字典顺序)列出,如n=3时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2,3 2 1六个排列。 任务描述: 给出某个排列,求出这个排列的下k个排列,如果遇到最后一个排列,则下1排列为第1个排列,即排列1 2 3…n。 比如:n = 3,k=2 给出排列2 3 1,则它的下1个排列为3 1 2,下2个排列为3 2 1,因此答案为3 2 1。 输入 第一行是一个正整数m,表示测试数据的个数,下面是m组测试数据,每组测试数据第一行是2个正整数n( 1 <= n < 1024 )和k(1<=k<=64),第二行有n个正整数,是1,2 … n的一个排列。 输出 对于每组输入数据,输出一行,n个数,中间用空格隔开,表示输入排列的下k个排列。 样例输入 3 3 1 2 3 1 3 1 3 2 1 10 2 1 2 3 4 5 6 7 8 9 10 样例输出 3 1 2 1 2 3 1 2 3 4 5 6 7 9 8 10
角谷猜想 逆 对于一个整数n,如果n为偶数,则除以二,如果n为奇数,则乘三加一。
对于一个整数n,如果n为偶数,则除以二,如果n为奇数,则乘三加一。 输入输出格式 输入格式: 共一行,两个整数,m,n。 输出格式: 每行一个整数,输出所有经过n次操作(见题目描述)能得到m的正整数。(从小到大) 我的代码,望改正,或重制(不穷举) ``` #include<bits/stdc++.h> using namespace std; int m,n; double po; bool everr=false; bool pd(double a) { if(a-int(a)==0)return true; else return false; } bool jo(int a) { if(a%2==0)return true; else return false; } void doo(double z,int sum) { if(everr==false){sum=0;everr=true;} if(pd(z)&&z!=0&&sum==n) printf("%f\n",z); else if(pd(z)&&sum<n) { if(jo(z)) { if(pd(z/2))doo(z/2,sum+1); if(pd((z-1)/3))doo((z-1)/3,sum+1); } if(!jo(z)) if(pd(z*2))doo(z*2,sum+1); } } int main() { scanf("%d%d",&m,&n); if(m==1)po=pow(2,n); else if(m==0)return 0; else po=pow(m,n); doo(m,0); return 0; } ```
反向倒腿计算出原来的数表,怎么使用C语言的程序的代码的编写的方式进行编程的
Problem Description Yanghee 是一个小学生。他的数学老师给全班同学布置了一道家庭作业,即根据 一张不超过5000的n(n<50)个正整数组成的数表,两两相加得到n(n-1)/2个和,然后把它们排序。例如,如果数表含有四个数1,3,4,9,那么正确答案是4,5,7,10,12,13。Yanghee 做完作业以后和小伙伴们出去玩了一下午,回家以后发现老师给的数表不见了,可是他算出的答案还在。你能帮助Yanghee根据他的答案计算出原来的数表吗? Input 输入第1行是1个正整数N,3<=n<50.然后有若干行,每行10个正整数,共计n(n-1)/2个数. 输入的数据有唯一解. Output 按从小到大输出n个数x[1],x[2],...,x[n],每行1个,使得任意2个数之和恰是输入的n(n-1)/2个数. Sample Input 15 3 4 5 6 7 8 9 10 11 12 13 14 15 16 5 6 7 8 9 10 11 12 13 14 15 16 17 7 8 9 10 11 12 13 14 15 16 17 18 9 10 11 12 13 14 15 16 17 18 19 11 12 13 14 15 16 17 18 19 20 13 14 15 16 17 18 19 20 21 15 16 17 18 19 20 21 22 17 18 19 20 21 22 23 19 20 21 22 23 24 21 22 23 24 25 23 24 25 26 25 26 27 27 28 29 Sample Output 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
英特尔不为人知的 B 面
从 PC 时代至今,众人只知在 CPU、GPU、XPU、制程、工艺等战场中,英特尔在与同行硬件芯片制造商们的竞争中杀出重围,且在不断的成长进化中,成为全球知名的半导体公司。殊不知,在「刚硬」的背后,英特尔「柔性」的软件早已经做到了全方位的支持与支撑,并持续发挥独特的生态价值,推动产业合作共赢。 而对于这一不知人知的 B 面,很多人将其称之为英特尔隐形的翅膀,虽低调,但是影响力却不容小觑。 那么,在...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
如何防止抄袭PCB电路板
目录 1、抄板是什么 2、抄板是否属于侵权 3、如何防止抄板 1、抄板是什么 抄板也叫克隆或仿制,是对设计出来的PCB板进行反向技术研究;目前全新的定义:从狭义上来说,抄板仅指对电子产品电路板PCB文件的提取还原和利用文件进行电路板克隆的过程;从广义上来说,抄板不仅包括对电路板文件提取、电路板克隆、电路板仿制等技术过程,而且包括对电路板文件进行修改(即改板)、对电子产品外形模具进行三维...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问