为了参加蓝桥杯,我想了一下算法,数学不好是这么难的。 接下来是蓝桥杯的问题(练习题)。 虽然我用的是java,但是我觉得网上的人大多用的是c语言。 如果有更好的方法,我希望你能分享。
有1.50枚硬币。 可能包括1元、5角、1角、5分4种类型。 我知道总价值是20元。 求出各种硬币的数量。
例如,2、34、6、8是答案。
2,33,15,0是另一个可能的答案,显然答案不是唯一的。
你的任务是确定一共有几个这样不同的方案。 (包括已经发出的两个)?
{可以看出,这里的硬币数量和1元20 5角10 1角2 5分=400的关系的分类才满足主题要求}
2 .四平方和(编程)四平方定理也称为拉格朗日定理。 每个正整数最多可以表示4个正整数的平方和。 包括0,可以表示为四个数的平方和。
例如:
5=0^2 0^2 1^2 2^2 7=1^2 1^2 1^2 2^2
对于给定的正整数,可能存在多个平方和的表示法。 我要求你重新排列四个数字。 0=a=b=c=d然后对所有可能的表示法按联合主键的升序排列a、b、c、d,最后输出第一个表示法。 在程序中输入正整数n(n5000000 )。 必须输出4个非负整数。 从小到大排序,中间用空格分隔。 例如,输入5
程序输出:
0 0 1 2
资源承诺:
高峰内存消耗(包括虚拟机) 256M CPU消耗为3000ms
请严格输出“请输入.” 等多馀内容,不要画蛇足。
(这里显示了没有使用return的情况。 结果输出多种情况。 我们最终的答案只是按第一中升序得出结果。 所以,解决问题的时候一定要看清主题。 这里是对我自己的忠告。 )
3 .区间第k大的数
1 .第1行输入序列的个数n
2 .在第2行中输入序列
3.3第三行的输入区间数
4 .输入l、r、k : l )区间开始r :区间结束k; 第k大的数
下标从一开始
import java.util.Scanner;
公共类主程序{
/*寻找第k大的数字*
publicvoidfindk(inta[],int b[] ) {
int l,r,k,I,j;
l=b[0];
r=b[1];
k=b[2];
int w=r-l 1;
int[] c=new int[w]; //保管区间的序列
for(I=0; I
c[i]=a[l-1];
l=1;
如果if(l==(r1 ) ) l==r 1,则区间序列是最后一个
布雷克;
}
Int小型计算机;
for(I=0; I
for(j=I1; Jj
if(c[I]
small=c[i];
c[i]=c[j];
c[j]=small;
}
}
}
system.out.println(c[k-1];
}
publicstaticvoidmain (字符串[ ] args ) {
//todo自动- generated method stub
sannerin=newscanner(system.in;
int n=in.nextInt (; //序列的个数
//给定序列
int array[]=new int[n];
int i,j;
for(I=0; I
array[i]=in.nextInt (;
}
//区间数
int m=in.nextInt (;
//l r k
int[] bArray[]=new int[m][3];
for(I=0; I
for(j=0; j3; j ) {
bArray[i][j]=in.nextInt (;
}
}
MainR w;
for(I=0; I
w=new MainR (;
w.findk (阵列,bArray[i];
}
in.close (;
}
}
希望以上是正文的全部内容,对大家的学习有帮助。 另外,我希望你支持很多编剧。