内容发布更新时间 : 2024/11/18 15:29:27星期一 下面是文章的全部内容请认真阅读。
4火锅火锅和火锅(10分)
题目内容:
众所周知,沫沫以火锅为生。在E8的聚餐活动中,他经常卖萌卖无辜领着大家吃火锅。。
有一天,沫沫听说学校附近的哺呷哺呷在某现充的赞助下有一个优惠活动,只需30软妹币,对每个客人,它会上N道菜,但是客人只能挑选其中连续上的一些菜。 于是他非常兴奋的拉着灰灰和渣渣去吃火锅去啦。
沫沫是一个十分挑食的人,所以他对每一道菜都有一个愉快度(当然因为他的挑食,某些事物的愉快度会是负数)。
为了让沫沫能非常愉快的享受这次聚餐,善解人意的灰灰和渣渣决定帮他计算,他们应该怎么选择菜才能使沫沫最开心地吃完这次聚餐。 输入格式:
第一行是一个整数T,(T <= 10)表示测试案例的个数
对于每个测试案例,第一行是一个整数N,( 1<=N <= 10000)表示菜的个数
接下来的N个数字,第i个数字si表示沫沫对第i道菜的愉快度。( -1000 <=si <= 1000) PS:由于CF又被血虐掉rating,所以沫沫的起始愉快度是0 PPS:沫沫完全可能得到一个为负值的愉快值, poor 沫沫。。 输出格式:
对于每个样例,输出一个数字,表示沫沫吃完之后愉快度的最大值。 HINT: 对于 5 6 -1 5 4 -7
我们选择6, -1, 5, 4这四道菜(注意必须是连续的,所以不能跳过-1) 做完后请思考,如果N的范围是1<=N<=100000呢? 输入样例:
2 5
6 -1 5 4 -7 7
0 6 -1 1 -6 7 -5
输出样例:
14 7
源程序:
#include
int main() {
int x,n,t,s,m,max=-1001; scanf(\ while(t--) {
scanf(\ s=m=0; while(n--) {
scanf(\ if(max if(max<0) printf(\ else printf(\ } return 0; } 第七周 数组一 1组成最大数(10分) 题目内容: 任意输入一个自然数,输出该自然数的各位数字组成的最大数。 输入格式: 自然数 n 输出格式: 各位数字组成的最大数 输入样例: 1593 输出样例: 9531[回车] 源程序: #include { int a[10]={0},i=0,j,p,n,t; scanf(\ t=n; while(t) { a[i]=t; t=t/10; } p=i; for(i=0;i for(j=0;j if(a[j] { t=a[j];a[j]=a[j+1];a[j+1]=t;} i++; t=0; for(i=0;i t=t*10+a[i]; printf(\ return 0; } 2回文数(10分) 题目内容: 输出所有不超过n(取n<256)的、其平方具有对称性质的正整数(也称为回文数)。 如: 1*1=1; 2*2=4;3*3=9;11*11=121;1,2,3,11是回文数。 输入格式: 输入n(n<256) 输出格式: 输出所有不超过n的回文数 输入样例: 3 输出样例: 1[回车] 2[回车] 源程序: #include int n,m,i,f,s; scanf(\ if(n<256 && n>0) for(i=1;i { } m=i*i; f=m; s=0; while(f>0) { s=s*10+f; f=f/10; } if(m==s) printf(\ else printf(\ } return 0; 3洗牌(10分) 题目内容: 假设我们有 2n 张牌,它们以 1, 2, ..., n, n+1, ..., 2n 编号并在开始时保持着这种顺序。一次洗牌就是将牌原来的次序变为 n+1, 1, n+2, 2, ..., 2n, n,也就是将原来的前 n 张牌放到位置 2, 4, ..., 2n,并且将余下的 n 张牌按照他们原来的次序放到奇数位置 1, 3, ..., 2n-1。已经证明对于任何一个自然数 n,这 2n 张牌经过一定次数的洗牌就回到原来的次序。但我们不知道对于一个特定的 n,需要几次洗牌才能将牌洗回原来的次序。 输入格式: 牌张数的一半n,即初始情况下一共有2n张牌,n为int型整数 输出格式: 将牌洗回原来的次序所需要的洗牌次数 输入样例: 10 输出样例: 6[回车] 源程序: #include int a[N]={0},b[N]={0},c[N],i,n,s=0; scanf(\ for(i=0;i<2*n;i++) { a[i]=i+1; c[i]=a[i]; } do { for(i=0;i a[2*i+1]=a[i]; for(i=0;i // for(i=0;i<2*n;i++) printf(\ // printf(\ s++; }while(a[n]!=n+1); printf(\ return 0; } 4子数整除(10分) 题目内容: 对于一个五位数a1a2a3a4a5,可将其拆分为三个子数: ? ? ? ? ? ? sub1=a1a2a3 sub2=a2a3a4 sub3=a3a4a5 例如,五位数20207可以拆分成: sub1=202 sub2=020(=20) sub3=207 现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1、sub2、sub3都可被K整除。 输出时请按照由小到大的顺序排列(每行输出一个数)。 输入格式: 一个正整数K 输出格式: 请按照由小到大的顺序排列(每行输出一个数) 输入样例: 15 输出样例: 22555[回车] 25555[回车]