1.Jenkins介绍Jenkins 是一款流行的开源持续集成（Continuous Integration）工具，广泛用于项目开发，具有自动化构建、测试和部署等功能。官网： http://jenkins-ci.org/。2.推荐的插件Blue Ocean可以使构建过程变得直观简洁，并且好看赏心悦目Deploy to container Plugin自动部署war到tomcat上使用的，到JBoss和Glassfish貌似也可以3.优化maven改为阿里源,不然构建特别慢<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>注意仓库权限[scode type="blue"]入门学习ing，后续遇到问题再补充|´・ω・)ノ[/scode]
编程题7-1到7-19部分点击下文[post cid="788" /]函数题部分点击下文[post cid="791" /][collapse status="false" title="7-20 打印九九口诀表 (15分)"]7-20 打印九九口诀表 (15分)下面是一个完整的下三角九九口诀表：1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 本题要求对任意给定的一位正整数N，输出从1*1到N*N的部分口诀表。输入格式：输入在一行中给出一个正整数N（1≤N≤9）。输出格式：输出下三角N*N部分口诀表，其中等号右边数字占4位、左对齐。输入样例：4 输出样例：1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16#include<stdio.h> int main() { int N; int i,j; scanf("%d",&N); for(j=1;j<=N;j++) { for(i=1;i<=j;i++) printf("%d*%d=%-4d",i,j,i*j); if(N!=j) printf("\n"); } }[/collapse][collapse status="false" title="7-20 打印九九口诀表 (15分)"]7-21 求特殊方程的正整数解 (15分)本题要求对任意给定的正整数N，求方程X2+Y2=N的全部正整数解。输入格式：输入在一行中给出正整数N（≤10000）。输出格式：输出方程X2+Y2=N的全部正整数解，其中X≤Y。每组解占1行，两数字间以1空格分隔，按X的递增顺序输出。如果没有解，则输出No Solution。输入样例1：884 输出样例1：10 28 20 22 输入样例2：11 输出样例2：No Solution[/collapse][collapse status="false" title="7-22 龟兔赛跑 (20分)"]7-22 龟兔赛跑 (20分)乌龟与兔子进行赛跑，跑场是一个矩型跑道，跑道边可以随地进行休息。乌龟每分钟可以前进3米，兔子每分钟前进9米；兔子嫌乌龟跑得慢，觉得肯定能跑赢乌龟，于是，每跑10分钟回头看一下乌龟，若发现自己超过乌龟，就在路边休息，每次休息30分钟，否则继续跑10分钟；而乌龟非常努力，一直跑，不休息。假定乌龟与兔子在同一起点同一时刻开始起跑，请问T分钟后乌龟和兔子谁跑得快？输入格式：输入在一行中给出比赛时间T（分钟）。输出格式：在一行中输出比赛的结果：乌龟赢输出@_@，兔子赢输出^_^，平局则输出-_-；后跟1空格，再输出胜利者跑完的距离。输入样例：242 输出样例：@_@ 726[/collapse]
P5718 【深基4.例2】找最小值#include<stdio.h> int main() { int a[101], n,min=0; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } min = a[0]; for (int i=0; i < n; i++) { if (a[i] < min) min = a[i]; } printf("%d", min); return 0; } P5719 【深基4.例3】分类平均#include<stdio.h> int main() { int n, k,kcon=0; double aarr, barr,sn=0,sk=0; scanf("%d%d", &n,&k); for (int i = 1; i <= n; i++) { if (i % k == 0) { sk += i; kcon++; } sn += i; } barr = (sn - sk) / (n - kcon); aarr = sk / kcon; printf("%.1f %.1f",aarr ,barr); return 0; } P5720 【深基4.例4】一尺之棰#include<stdio.h> int main() { int a,out=0; scanf("%d", &a); while (a>=1) { out++; a = a / 2; } printf("%d", out); return 0; } P5721 【深基4.例6】数字直角三角形#include<stdio.h> int main() { int a, i, j, out = 0;//i行，j列 scanf("%d", &a); for (i = 1; i <= a; i++) { for (j = a; j >= i; j--) { out++; if (out < 10) printf("0%d", out); else printf("%d", out); } printf("\n"); } return 0; } P1009 阶乘之和注,因范围原因，并未通过全部测试点，练题考试用，故只写到这里不考虑高精度#include<stdio.h> int main() { long int n,s=0,t=1; scanf("%ld", &n); for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { t *= j; } s += t; t = 1; } printf("%ld", s); return 0; } P1980 计数问题#include "stdio.h" int main() { int n, x, out = 0; scanf("%d%d", &n, &x); for (int i = 1; i <= n; i++) { int tmp , tmp1; tmp = i; while (tmp > 0) { tmp1 = tmp % 10; tmp = tmp / 10; if (tmp1 == x) out++; } } printf("%d", out); return 0; }P1035 级数求和#include "stdio.h" int main() { int k,n=1; double s=0.0; scanf("%d", &k); while (s<=k) { s += 1.0 / n; n++; } printf("%d", n-1); return 0; }P2669 金币#include<stdio.h> int main() { int a, s = 0, i, j, count = 0,flog=0; scanf("%d", &a); for (i = 1; i <= a; i++) { for (j = 1; j <= i; j++) { s = i + s; count++; if (count >= a) { flog = 1; break; } } if (flog == 1) break; } printf("%d", s); return 0; }P5722 【深基4.例11】数列求和#include<stdio.h> int main() { int n,s=0; scanf("%d", &n); while (n != 0) { s += n--; } printf("%d", s); return 0; } P5723 【深基4.例13】质数口袋#include<stdio.h> int prime(int a) { int i, flog = 1; for (i = 2; i < a; i++) { if (a % i == 0) { flog = 0; break; } } return flog; } int main() { int a, i, b, c = 0, count = 0; scanf("%d", &a); for (i = 2; i <= a; i++) { b = prime(i); if (b == 1) { if (c + i > a) break; printf("%d\n", i); c = c + i; count++; } } printf("%d", count); return 0; } [P1217 [USACO1.5]回文质数 Prime Palindromes](https://www.luogu.com.cn/problem/P1217)P1423 小玉在游泳#include <stdio.h> int main() { float a=0,s=0,tmp=2; int i=0; scanf("%f", &a); while (s <= a) { s = tmp + s; tmp = tmp * 0.98; i++; } printf("%d", i); return 0; }P1307 数字反转#include<stdio.h> int main() { int a,i,sum=0,b,c; scanf("%d",&a); c=a; if(a<0) a=-a; while(a) { b=a%10; sum=sum*10+b; a=a/10; } if(c<0) { sum=-sum; } printf("%d",sum); return 0; } P1720 月落乌啼算钱#include <stdio.h> #include <math.h> int main() { int n; double fn,fz1=1,fz2=1; scanf("%d", &n); for (int i = 0; i < n; i++) { fz1 *= (1 + sqrt(5)) / 2; fz2 *= (1 - sqrt(5)) / 2; } fn = (fz1 - fz2) / sqrt(5); printf("%.2f", fn); return 0; } P5724 【深基4.习5】求极差#include<stdio.h> int main(){ int a[1000],b,i,j,t,c; scanf("%d",&b); for(i=0;i<b;i++) scanf("%d",&a[i]); for(i=0;i<b-1;i++){ for(j=0;j<b-1-i;j++){ if(a[j]>a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } c=a[b-1]-a[0]; printf("%d",c); return 0; } P1420 最长连号#include <stdio.h> #include <math.h> int main() { int n, a[10000], cont = 1, out = 1;; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); for (int i = 0; i < n; i++) { if (a[i] + 1 == a[i + 1]) { cont++; } else cont = 1; if (cont > out) { out = cont; } } printf("%d", out); return 0; } P1075 质因数分解#include<stdio.h> int main() { int n; scanf("%d", &n); for (int i = 2; i <= n; i++) if (n % i == 0) { printf("%d", n / i); return 0; } } P5725 【深基4.习8】求三角形#include<stdio.h> int main() { int a, i, j, out = 0;//i行，j列 scanf("%d", &a); for (i = 1; i <= a; i++) { for (j = 1; j <= a; j++) { out++; if (out < 10) printf("0%d", out); else printf("%d", out); } printf("\n"); } printf("\n"); out = 0; for (i = 1; i <= a; i++) { for (j = a; j > i; j--) { printf(" "); } for (j = 0; j < i; j++) { out++; if (out < 10) printf("0%d", out); else printf("%d", out); } printf("\n"); } return 0; } P5726 【深基4.习9】打分#include <stdio.h> int main() { int a[1001],n,t; float s=0; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (a[j] > a[j + 1]) { t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } } for (int i = 1; i < n - 1; i++) { s = s + a[i]; } printf("%.2f", s / (n - 2)); return 0; }[P4956 [COCI2017-2018#6] Davor](https://www.luogu.com.cn/problem/P4956)P1089 津津的储蓄计划#include "stdio.h" int main() { int hua, ziji = 0, h = 0; for (int i = 1; i <= 12; i++) { scanf("%d", &hua); ziji = ziji + 300 - hua; if (ziji < 0) { printf("-%d", i); return 0; } else { h = ziji / 100 + h; ziji = ziji % 100; } } printf("%d", 120 * h + ziji); return 0; }
编程题7-1到7-19部分点击下文[post cid="788" cover="https://www.mezzp.com/usr/uploads/2020/03/3606830662.jpg"/]编程题7-20到7-38部分点击下文[post cid="789" cover="https://www.mezzp.com/usr/uploads/2020/03/3606830662.jpg"/][collapse status="false" title="6-1 简单输出整数 (10分)"]6-1 简单输出整数 (10分)本题要求实现一个函数，对给定的正整数N，打印从1到N的全部正整数。函数接口定义：void PrintN ( int N ); 其中N是用户传入的参数。该函数必须将从1到N的全部正整数顺序打印出来，每个数字占1行。裁判测试程序样例：#include <stdio.h> void PrintN ( int N ); int main () { int N; scanf("%d", &N); PrintN( N ); return 0; } /* 你的代码将被嵌在这里 */ 输入样例：3输出样例：1 2 3void PrintN ( int N ) { int i; for(i=0;i<N;i++) { printf("%d\n",i+1); } } [/collapse][collapse status="false" title="6-2 多项式求值 (15分)"]6-2 多项式求值 (15分)本题要求实现一个函数，计算阶数为n，系数为a[0] ... a[n]的多项式f(x)=∑i=0n(a[i]×xi) 在x点的值。函数接口定义：double f( int n, double a[], double x ); 其中n是多项式的阶数，a[]中存储系数，x是给定点。函数须返回多项式f(x)的值。裁判测试程序样例：#include <stdio.h> #define MAXN 10 double f( int n, double a[], double x ); int main() { int n, i; double a[MAXN], x; scanf("%d %lf", &n, &x); for ( i=0; i<=n; i++ ) scanf(“%lf”, &a[i]); printf("%.1f\n", f(n, a, x)); return 0; } /* 你的代码将被嵌在这里 */ 输入样例：2 1.1 1 2.5 -38.7 输出样例：-43.1double f( int n, double a[], double x ) { int i; double b=1.0; double sum=a[0]; for(i=1;i<=n;i++) { b=b*x; sum=sum+b*a[i]; } return sum; } [/collapse][collapse status="false" title="6-3 简单求和 (10分)"]6-3 简单求和 (10分)本题要求实现一个函数，求给定的N个整数的和。函数接口定义：int Sum ( int List[], int N ); 其中给定整数存放在数组List[]中，正整数N是数组元素个数。该函数须返回N个List[]元素的和。裁判测试程序样例：#include <stdio.h> #define MAXN 10 int Sum ( int List[], int N ); int main () { int List[MAXN], N, i; scanf("%d", &N); for ( i=0; i<N; i++ ) scanf("%d", &List[i]); printf("%d\n", Sum(List, N)); return 0; } /* 你的代码将被嵌在这里 */ 输入样例：3 12 34 -5 输出样例：41int Sum ( int List[], int N ) { int i,sum=0; for(i=0;i<N;i++) { sum=sum+List[i]; } return sum; }[/collapse][collapse status="false" title="6-4 求自定类型元素的平均 (10分)"]6-4 求自定类型元素的平均 (10分)本题要求实现一个函数，求N个集合元素S[]的平均值，其中集合元素的类型为自定义的ElementType。函数接口定义：ElementType Average( ElementType S[], int N ); 其中给定集合元素存放在数组S[]中，正整数N是数组元素个数。该函数须返回N个S[]元素的平均值，其值也必须是ElementType类型。裁判测试程序样例：#include <stdio.h> #define MAXN 10 typedef float ElementType; ElementType Average( ElementType S[], int N ); int main () { ElementType S[MAXN]; int N, i; scanf("%d", &N); for ( i=0; i<N; i++ ) scanf("%f", &S[i]); printf("%.2f\n", Average(S, N)); return 0; } /* 你的代码将被嵌在这里 */ 输入样例：3 12.3 34 -5 输出样例：13.77ElementType Average( ElementType S[], int N ) { int i; float sum=0,average=0; for(i=0;i<N;i++) { sum=sum+S[i]; } average=sum/N; return average; }[/collapse][collapse status="false" title="6-5 求自定类型元素的最大值 (10分)"]6-5 求自定类型元素的最大值 (10分)本题要求实现一个函数，求N个集合元素S[]中的最大值，其中集合元素的类型为自定义的ElementType。函数接口定义：ElementType Max( ElementType S[], int N ); 其中给定集合元素存放在数组S[]中，正整数N是数组元素个数。该函数须返回N个S[]元素中的最大值，其值也必须是ElementType类型。裁判测试程序样例：#include <stdio.h> #define MAXN 10 typedef float ElementType; ElementType Max( ElementType S[], int N ); int main () { ElementType S[MAXN]; int N, i; scanf("%d", &N); for ( i=0; i<N; i++ ) scanf("%f", &S[i]); printf("%.2f\n", Max(S, N)); return 0; } /* 你的代码将被嵌在这里 */ 输入样例：3 12.3 34 -5 输出样例：34.00ElementType Max( ElementType S[], int N ) { ElementType t, max=S[0]; int i; for(i=0;i<N;i++) { if(S[i]>max) max=S[i]; } return max; } [/collapse][collapse status="false" title="6-7 统计某类完全平方数 (20分)"]6-7 统计某类完全平方数 (20分)本题要求实现一个函数，判断任一给定整数N是否满足条件：它是完全平方数，又至少有两位数字相同，如144、676等。函数接口定义：int IsTheNumber ( const int N );其中N是用户传入的参数。如果N满足条件，则该函数必须返回1，否则返回0。裁判测试程序样例：#include <stdio.h> #include <math.h> int IsTheNumber ( const int N ); int main() { int n1, n2, i, cnt; scanf("%d %d", &n1, &n2); cnt = 0; for ( i=n1; i<=n2; i++ ) { if ( IsTheNumber(i) ) cnt++; } printf("cnt = %d\n", cnt); return 0; } /* 你的代码将被嵌在这里 */ 输入样例：105 500输出样例：cnt = 6题解int IsTheNumber(const int N) { int temp = sqrt(N), n = N, a[10] = {0}; if (temp * temp == n) { while (n != 0) { a[n % 10]++; n = n / 10; } } for (int i = 0; i < 10; i++) { if (a[i] > 1) return 1; } return 0; }[/collapse][collapse status="false" title="6-9 统计个位数字 (15分)"]6-9 统计个位数字 (15分)本题要求实现一个函数，可统计任一整数中某个位数出现的次数。例如-21252中，2出现了3次，则该函数应该返回3。函数接口定义：int Count_Digit ( const int N, const int D ); 其中N和D都是用户传入的参数。N的值不超过int的范围；D是[0, 9]区间内的个位数。函数须返回N中D出现的次数。裁判测试程序样例：#include <stdio.h> int Count_Digit ( const int N, const int D ); int main() { int N, D; scanf("%d %d", &N, &D); printf("%d\n", Count_Digit(N, D)); return 0; } /* 你的代码将被嵌在这里 */ 输入样例：-21252 2 输出样例：3题解int Count_Digit(const int N, const int D) { int temp=N, flog = 0; if (N == 0) return 1; while (temp != 0) { if (temp % 10 == D|| temp % 10==-D) flog++; temp = temp / 10; } return flog; }[/collapse]
PTA 基础编程题目集 编程题部分的7-1到7-19PTA题目链接7-20到7-38点击下文[post cid="789" cover="https://www.mezzp.com/usr/uploads/2020/03/2632902797.jpg"/]函数题部分点击下文[post cid="791" cover="https://www.mezzp.com/usr/uploads/2020/03/2632902797.jpg"/][collapse status="false" title="7-1 厘米换算英尺英寸 (15分)"]7-1 厘米换算英尺英寸 (15分)如果已知英制长度的英尺foot和英寸inch的值，那么对应的米是(foot+inch/12)×0.3048。现在，如果用户输入的是厘米数，那么对应英制长度的英尺和英寸是多少呢？别忘了1英尺等于12英寸。输入格式：输入在一行中给出1个正整数，单位是厘米。输出格式：在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值，中间用空格分开。输入样例：170输出样例：5 6#include <stdio.h> int main() { int lm, f, i; scanf("%d", &lm); f = lm /100.0/0.3048; i = (lm / 100.0 / 0.3048 - f) * 12; printf("%d %d", f, i); return 0; }[/collapse][collapse status="false" title="7-2 然后是几点 (15分)"]7-2 然后是几点 (15分)有时候人们用四位数字表示一个时间，比如1106表示11点零6分。现在，你的程序要根据起始时间和流逝的时间计算出终止时间。读入两个数字，第一个数字以这样的四位数字表示当前时间，第二个数字表示分钟数，计算当前时间经过那么多分钟后是几点，结果也表示为四位数字。当小时为个位数时，没有前导的零，即5点30分表示为530。注意，第二个数字表示的分钟数可能超过60，也可能是负数。输入格式：输入在一行中给出2个整数，分别是四位数字表示的起始时间、以及流逝的分钟数，其间以空格分隔。注意：在起始时间中，当小时为个位数时，没有前导的零，即5点30分表示为530；流逝的分钟数可能超过60，也可能是负数。输出格式：输出四位数字表示的终止时间，当小时为个位数时，没有前导的零。题目保证起始时间和终止时间在同一天内。输入样例：1120 110 输出样例：1310#include "stdio.h" int main() { int t, a, sum,h,m,out; scanf("%d%d", &t, &a); sum = t / 100 * 60 + t % 100;//分钟数 sum += a;//总分钟数 h = sum / 60;//化小时 m = sum - h * 60;//剩下分 out = h * 100 + m;//组合 printf("%d", out); return 0; }[/collapse][collapse status="false" title="7-3 逆序的三位数 (10分)"]7-3 逆序的三位数 (10分)程序每次读入一个正3位数，然后输出按位逆序的数字。注意：当输入的数字含有结尾的0时，输出不应带有前导的0。比如输入700，输出应该是7。输入格式：每个测试是一个3位的正整数。输出格式：输出按位逆序的数。输入样例：123 输出样例：321#include <stdio.h> int main() { int i,a,b[3]; scanf("%d",&a); for(i=0;i<3;i++) { b[i]=a%10; a=a/10; if(b[i]==0) continue; printf("%d",b[i]); } return 0; } [/collapse][collapse status="false" title="7-4 BCD解密 (10分)"]7-4 BCD解密 (10分)BCD数是用一个字节来表达两位十进制的数，每四个比特表示一位。所以如果一个BCD数的十六进制是0x12，它表达的就是十进制的12。但是小明没学过BCD，把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了！现在，你的程序要读入这个错误的十进制数，然后输出正确的十进制数。提示：你可以把18转换回0x12，然后再转换回12。输入格式：输入在一行中给出一个[0, 153]范围内的正整数，保证能转换回有效的BCD数，也就是说这个整数转换成十六进制时不会出现A-F的数字。输出格式：输出对应的十进制数。输入样例：18 输出样例：12#include <stdio.h> int main() { int N; scanf("%d",&N); printf("%x",N); return 0; } [/collapse][collapse status="false" title="7-5 表格输出 (5分)"]7-5 表格输出 (5分)本题要求编写程序，按照规定格式输出表格。输入格式：本题目没有输入。输出格式：要求严格按照给出的格式输出下列表格：------------------------------------ Province Area(km2) Pop.(10K) ------------------------------------ Anhui 139600.00 6461.00 Beijing 16410.54 1180.70 Chongqing 82400.00 3144.23 Shanghai 6340.50 1360.26 Zhejiang 101800.00 4894.00 ------------------------------------#include <stdio.h> int main() { printf("------------------------------------\n"); printf("Province Area(km2) Pop.(10K)\n"); printf("------------------------------------\n"); printf("Anhui 139600.00 6461.00\n"); printf("Beijing 16410.54 1180.70\n"); printf("Chongqing 82400.00 3144.23\n"); printf("Shanghai 6340.50 1360.26\n"); printf("Zhejiang 101800.00 4894.00\n"); printf("------------------------------------\n"); return 0; }[/collapse][collapse status="false" title="7-6 混合类型数据格式化输入 (5分)"]7-6 混合类型数据格式化输入 (5分)本题要求编写程序，顺序读入浮点数1、整数、字符、浮点数2，再按照字符、整数、浮点数1、浮点数2的顺序输出。输入格式：输入在一行中顺序给出浮点数1、整数、字符、浮点数2，其间以1个空格分隔。输出格式：在一行中按照字符、整数、浮点数1、浮点数2的顺序输出，其中浮点数保留小数点后2位。输入样例：2.12 88 c 4.7 输出样例：c 88 2.12 4.70#include <stdio.h> int main() { float a, b; int c; char d; scanf("%f %d %c %f", &a, &c, &d, &b); printf("%c %d %.2f %.2f", d, c, a, b); return 0; }[/collapse][collapse status="false" title="7-7 12-24小时制 (15分)"]7-7 12-24小时制 (15分)编写一个程序，要求用户输入24小时制的时间，然后显示12小时制的时间。输入格式：输入在一行中给出带有中间的:符号（半角的冒号）的24小时制的时间，如12:34表示12点34分。当小时或分钟数小于10时，均没有前导的零，如5:6表示5点零6分。提示：在scanf的格式字符串中加入:，让scanf来处理这个冒号。输出格式：在一行中输出这个时间对应的12小时制的时间，数字部分格式与输入的相同，然后跟上空格，再跟上表示上午的字符串AM或表示下午的字符串PM。如5:6 PM表示下午5点零6分。注意，在英文的习惯中，中午12点被认为是下午，所以24小时制的12:00就是12小时制的12:0 PM；而0点被认为是第二天的时间，所以是0:0 AM。输入样例：21:11 输出样例：9:11 PM#include<stdio.h> int main() { int a,b; scanf("%d:%d",&a,&b); if(a>12) { a-=12; printf("%d:%d PM",a,b); } else if(a==12) { printf("%d:%d PM",a,b); } else printf("%d:%d AM",a,b); return 0; } [/collapse][collapse status="false" title="7-8 超速判断 (10分)"]7-8 超速判断 (10分)模拟交通警察的雷达测速仪。输入汽车速度，如果速度超出60 mph，则显示“Speeding”，否则显示“OK”。输入格式：输入在一行中给出1个不超过500的非负整数，即雷达测到的车速。输出格式：在一行中输出测速仪显示结果，格式为：Speed: V - S，其中V是车速，S或者是Speeding、或者是OK。输入样例1：40 输出样例1：Speed: 40 - OK 输入样例2：75 输出样例2：Speed: 75 - Speeding#include<stdio.h> int main() { int a=0; scanf("%d",&a); if(a>60) printf("Speed: %d - Speeding",a); else printf("Speed: %d - OK",a); return 0; } [/collapse][collapse status="false" title="7-9 用天平找小球 (10分)"]7-9 用天平找小球 (10分)三个球A、B、C，大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。输入格式：输入在一行中给出3个正整数，顺序对应球A、B、C的重量。输出格式：在一行中输出唯一的那个不一样的球。输入样例：1 1 2 输出样例：C#include <stdio.h> int main() { int A,B,C; char D; scanf("%d%d%d",&A,&B,&C); if(A==B) D='C'; else if(A==C) D='B'; else D='A'; printf("%c",D); return 0; }[/collapse][collapse status="false" title="7-10 计算工资 (15分)"]7-10 计算工资 (15分)某公司员工的工资计算方法如下：一周内工作时间不超过40小时，按正常工作时间计酬；超出40小时的工作时间部分，按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工，进公司不少于5年的员工为老职工，5年以下的为新职工。新职工的正常工资为30元/小时，老职工的正常工资为50元/小时。请按该计酬方式计算员工的工资。输入格式：输入在一行中给出2个正整数，分别为某员工入职年数和周工作时间，其间以空格分隔。输出格式：在一行输出该员工的周薪，精确到小数点后2位。输入样例1：5 40 输出样例1：2000.00 输入样例2：3 50 输出样例2：1650.00#include "stdio.h" int main() { int y,t; float m; scanf("%d%d", &y, &t); if (y >= 5) { if (t <= 40) m = t * 50; else m = 40 * 50 + (t - 40) * 50 * 1.5; } else { if (t <= 40) m = t * 30; else m = 30 * 40 + (t - 40) * 30 * 1.5; } printf("%.2f", m); return 0; }[/collapse][collapse status="false" title="7-11 分段计算居民水费 (10分)"]7-11 分段计算居民水费 (10分)为鼓励居民节约用水，自来水公司采取按用水量阶梯式计价的办法，居民应交水费y（元）与月用水量x（吨）相关：当x不超过15吨时，y=4x/3；超过后，y=2.5x−17.5。请编写程序实现水费的计算。输入格式：输入在一行中给出非负实数x。输出格式：在一行输出应交的水费，精确到小数点后2位。输入样例1：12 输出样例1：16.00 输入样例2：16 输出样例2：22.50#include <stdio.h> int main() { float x; scanf("%f", &x); if (x > 15) printf("%.2f", 2.5 * x - 17.5); else printf("%.2f", 4 * x / 3); return 0; }[/collapse][collapse status="false" title="7-12 两个数的简单计算器 (10分)"]7-12 两个数的简单计算器 (10分)本题要求编写一个简单计算器程序，可根据输入的运算符，对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。输入格式：输入在一行中依次输入操作数1、运算符、操作数2，其间以1个空格分隔。操作数的数据类型为整型，且保证除法和求余的分母非零。输出格式：当运算符为+、-、*、/、%时，在一行输出相应的运算结果。若输入是非法符号（即除了加、减、乘、除和求余五种运算符以外的其他符号）则输出ERROR。输入样例1：-7 / 2 输出样例1：-3 输入样例2：3 & 6 输出样例2：ERROR#include "stdio.h" int main() { int a, b; char c; scanf("%d %c %d", &a, &c, &b); if (c=='+') printf("%d", a + b); else if (c=='-') printf("%d", a - b); else if (c=='*') printf("%d", a * b); else if (c=='/') printf("%d", a / b); else if (c=='%') printf("%d", a % b); else printf("ERROR"); return 0; }[/collapse][collapse status="false" title="7-13 日K蜡烛图 (15分)"]7-13 日K蜡烛图 (15分)股票价格涨跌趋势，常用蜡烛图技术中的K线图来表示，分为按日的日K线、按周的周K线、按月的月K线等。以日K线为例，每天股票价格从开盘到收盘走完一天，对应一根蜡烛小图，要表示四个价格：开盘价格Open（早上刚刚开始开盘买卖成交的第1笔价格）、收盘价格Close（下午收盘时最后一笔成交的价格）、中间的最高价High和最低价Low。如果Close<Open，表示为“BW-Solid”（即“实心蓝白蜡烛”）；如果Close>Open，表示为“R-Hollow”（即“空心红蜡烛”）；如果Open等于Close，则为“R-Cross”（即“十字红蜡烛”）。如果Low比Open和Close低，称为“Lower Shadow”（即“有下影线”），如果High比Open和Close高，称为“Upper Shadow”（即“有上影线”）。请编程序，根据给定的四个价格组合，判断当日的蜡烛是一根什么样的蜡烛。输入格式：输入在一行中给出4个正实数，分别对应Open、High、Low、Close，其间以空格分隔。输出格式：在一行中输出日K蜡烛的类型。如果有上、下影线，则在类型后加上with 影线类型。如果两种影线都有，则输出with Lower Shadow and Upper Shadow。输入样例1：5.110 5.250 5.100 5.105 输出样例1：BW-Solid with Lower Shadow and Upper Shadow 输入样例2：5.110 5.110 5.110 5.110 输出样例2：R-Cross 输入样例3：5.110 5.125 5.112 5.126 输出样例3：R-Hollow#include "stdio.h" int main() { float o,c,h,l; scanf("%f%f%f%f",&o,&h,&l,&c); if(c<o) printf("BW-Solid"); else if(c>o) printf("R-Hollow"); else printf("R-Cross"); if((l<o&&l<c)&&(h>o&&h>c)) printf(" with Lower Shadow and Upper Shadow"); else if(l<o&&l<c) printf(" with Lower Shadow"); else if(h>o&&h>c) printf(" with Upper Shadow"); return 0; }[/collapse][collapse status="false" title="7-14 求整数段和 (15分)"]7-14 求整数段和 (15分)给定两个整数A和B，输出从A到B的所有整数以及这些数的和。输入格式：输入在一行中给出2个整数A和B，其中−100≤A≤B≤100，其间以空格分隔。输出格式：首先顺序输出从A到B的所有整数，每5个数字占一行，每个数字占5个字符宽度，向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。输入样例：-3 8 输出样例： -3 -2 -1 0 1 2 3 4 5 6 7 8 Sum = 30#include "stdio.h" int main() { int a, b, sum,flog=0; scanf("%d%d", &a, &b); sum = (a + b) * (b - a + 1 ) / 2; for (int i = a; i <= b ;i++) { printf("%5d", i); flog++; if (flog % 5 == 0 && i != b) printf("\n"); } printf("\n"); printf("Sum = %d", sum); return 0; }[/collapse][collapse status="false" title="7-15 计算圆周率 (15分)"]根据下面关系式，求圆周率的值，直到最后一项的值小于给定阈值。2π=1+31+3×52!+3×5×73!+⋯+3×5×7×⋯×(2n+1)n!+⋯输入格式：输入在一行中给出小于1的阈值。输出格式：在一行中输出满足阈值条件的近似圆周率，输出到小数点后6位。输入样例：0.01 输出样例：3.132157题解#include<stdio.h> int main() { float a, pi = 1; float n = 1, m = 1, j = 1, i = 0; scanf("%f", &a); while (n / m >= a) { i++; j += 2; n = n * i; m = m * j; pi += n / m; } pi = pi * 2; printf("%f", pi); return 0; }[/collapse][collapse status="false" title="7-16 求符合给定条件的整数集 (15分)"]7-16 求符合给定条件的整数集 (15分)给定不超过6的正整数A，考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。输入格式：输入在一行中给出A。输出格式：输出满足条件的的3位数，要求从小到大，每行6个整数。整数间以空格分隔，但行末不能有多余空格。输入样例：2 输出样例：234 235 243 245 253 254 324 325 342 345 352 354 423 425 432 435 452 453 523 524 532 534 542 543题解#include "stdio.h" int main() { int a,flog=0; int g, s, b;//个位十位百位 scanf("%d", &a); for (int i = 100; i < 1000; i++) { b = i / 100; s = i % 100 / 10; g = i % 100 % 10; if((g < a + 4 && g >= a)&&(s < a + 4 && s >= a)&&(b < a + 4 && b >= a)) if (g != s && s != b && g != b) { flog++; if(flog % 6 != 0) printf("%d ", g + s * 10 + b * 100); if (flog % 6 == 0) printf("%d\n", g + s * 10 + b * 100); } } return 0; }[/collapse][collapse status="false" title="7-17 爬动的蠕虫 (15分)"]7-17 爬动的蠕虫 (15分)一条蠕虫长1寸，在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸，但必须休息1分钟才能接着往上爬。在休息的过程中，蠕虫又下滑了D寸。就这样，上爬和下滑重复进行。请问，蠕虫需要多长时间才能爬出井？这里要求不足1分钟按1分钟计，并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部，那么蠕虫就完成任务了。初始时，蠕虫是趴在井底的（即高度为0）。输入格式：输入在一行中顺序给出3个正整数N、U、D，其中D<U，N不超过100。输出格式：在一行中输出蠕虫爬出井的时间，以分钟为单位。输入样例：12 3 1 输出样例：11#include <stdio.h> int main() { int N, U, D, time=0; scanf("%d%d%d", &N, &U, &D); while (1) { N = N - U; time++; if (N <= 0) break; N = N + D; time++; } printf("%d", time); return 0; }[/collapse][collapse status="false" title="7-18 二分法求多项式单根 (20分)"]7-18 二分法求多项式单根 (20分)二分法求函数根的原理为：如果连续函数f(x)在区间[a,b]的两个端点取值异号，即f(a)f(b)<0，则它在这个区间内至少存在1个根r，即f(r)=0。二分法的步骤为：检查区间长度，如果小于给定阈值，则停止，输出区间中点(a+b)/2；否则如果f(a)f(b)<0，则计算中点的值f((a+b)/2)；如果f((a+b)/2)正好为0，则(a+b)/2就是要求的根；否则如果f((a+b)/2)与f(a)同号，则说明根在区间[(a+b)/2,b]，令a=(a+b)/2，重复循环；如果f((a+b)/2)与f(b)同号，则说明根在区间[a,(a+b)/2]，令b=(a+b)/2，重复循环。本题目要求编写程序，计算给定3阶多项式f(x)=a3x3+a2x2+a1x+a0在给定区间[a,b]内的根。输入格式：输入在第1行中顺序给出多项式的4个系数a3、a2、a1、a0，在第2行中顺序给出区间端点a和b。题目保证多项式在给定区间内存在唯一单根。输出格式：在一行中输出该多项式在该区间内的根，精确到小数点后2位。输入样例：3 -1 -3 1 -0.5 0.5 输出样例：0.33[/collapse][collapse status="false" title="7-19 支票面额 (15分)"]7-19 支票面额 (15分)一个采购员去银行兑换一张y元f分的支票，结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错，于是清点了余额尚有2y元2f分，问该支票面额是多少？输入格式：输入在一行中给出小于100的正整数n。输出格式：在一行中按格式y.f输出该支票的原始面额。如果无解，则输出No Solution。输入样例1：23 输出样例1：25.51 输入样例2：22 输出样例2：No Solution题解#include<stdio.h> int main() { int n, y, f, flog = 0; scanf("%d", &n); for (y = 0; y <= 100; y++) { for (f = 0; f <= 100; f++) { if ((2 * y * 100 + 2 * f + n) == (f * 100 + y)) { printf("%d.%d", y, f); flog = 1; } } } if (flog == 0) printf("No Solution"); return 0; }[/collapse]
[scode type="yellow"]洛谷试炼场已升级为题单,感觉没之前好玩了，我新手村还没弄完。。。[/scode]kkksc03 上海洛谷网络科技有限公司 联合创始人可以理解一些同学的怀旧情怀，但是这两个真的没法共存，因为试炼场是我6年前写的屎山代码，已经严重影响了后端的效率，如果不删掉则无法完成洛谷4的完全重构。(近期502的现象和这个有关)如果重构同样的功能，则需要花费大量的时间精力。这不值得，因为我们有其他更重要的事情要做。至于题单，它比试炼场更灵活，题目质量也更好。(事实上，官方题单的题目主要迁移自试炼场，并进行了一些优化)，完成进度也还能算是保留试炼场的印迹。如果全部通过一个题单的题目的话，会有一些变化的哦！至于省选试炼场，当时题目选择质量更低，而用户精选有很多高质量的题单(比如CYJ的集训队题)，还能配上训练指导。实际上，学到省选级别，应该就不需要之前那样试炼场给你整理出需要学习的算法，而是可以借助题单创造更加灵活自主的训练方式。不过大概比较遗憾的是完成任务仪式感没有了吧。[collapse status="false" title="P1055 ISBN号码"]题目描述每一本正式出版的图书都有一个ISBN号码与之对应，ISBN码包括9位数字、1位识别码和3位分隔符，其规定格式如x-xxx-xxxxx-x，其中符号-就是分隔符（键盘上的减号），最后一位是识别码，例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言，例如0代表英语；第一个分隔符-之后的三位数字代表出版社，例如670代表维京出版社；第二个分隔符后的五位数字代表该书在该出版社的编号；最后一位为识别码。识别码的计算方法如下：首位数字乘以1加上次位数字乘以2……以此类推，用所得的结果mod11，所得的余数即为识别码，如果余数为10，则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的：对067082162这9个数字，从左至右，分别乘以1,2,...,9再求和，即0×1+6×2+……+2×9=158，然后取158mod11的结果4作为识别码。你的任务是编写程序判断输入的ISBN号码中识别码是否正确，如果正确，则仅输出Right；如果错误，则输出你认为是正确的ISBN号码。输入格式一个字符序列，表示一本书的ISBN号码（保证输入符合ISBN号码的格式要求）。输出格式一行，假如输入的ISBN号码的识别码正确，那么输出Right，否则，按照规定的格式，输出正确的ISBN号码（包括分隔符-）。输入输出样例输入0-670-82162-4输出Right输入0-670-82162-0输出0-670-82162-4说明/提示2008普及组第一题#include <stdio.h> int main() { char a[14]; int q=0, w=0; for (int i = 0; i < 14; i++) scanf("%c", &a[i]); q = (a[0]-'0') * 1 + (a[2] - '0') * 2 + (a[3] - '0') * 3 + (a[4] - '0') * 4 + (a[6] - '0') * 5 + (a[7] - '0') * 6 + (a[8] - '0') * 7 + (a[9] - '0') * 8 + (a[10] - '0') * 9; q = q % 11; if (q == 10) w = 'X'; else w = q + '0'; if (w == a[12]) printf("Right"); else { a[12] = w; for (int i = 0; i < 14; i++) printf("%c", a[i]); } return 0; }[/collapse]
[collapse status="false" title="P1046 陶陶摘苹果"]题目描述陶陶家的院子里有一棵苹果树，每到秋天树上就会结出 10 个苹果。苹果成熟的时候，陶陶就会跑去摘苹果。陶陶有个 30 厘米高的板凳，当她不能直接用手摘到苹果的时候，就会踩到板凳上再试试。现在已知 10 个苹果到地面的高度，以及陶陶把手伸直的时候能够达到的最大高度，请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果，苹果就会掉下来。输入格式输入包括两行数据。第一行包含 10 个 100 到 200 之间（包括 100 和 200 ）的整数（以厘米为单位）分别表示 1010 个苹果到地面的高度，两个相邻的整数之间用一个空格隔开。第二行只包括一个 100 到 120 之间（包含 100 和 120 ）的整数（以厘米为单位），表示陶陶把手伸直的时候能够达到的最大高度。输出格式输出包括一行，这一行只包含一个整数，表示陶陶能够摘到的苹果的数目。输入输出样例输入100 200 150 140 129 134 167 198 200 111110输出5说明/提示NOIP2005 普及组第一题#include "stdio.h" int main() { int a[10] = {0}, x, y = 0; for (int i = 0; i < 10; i++) scanf("%d", &a[i]); scanf("%d", &x); for (int i = 0; i < 10; i++) { if (a[i] <= x + 30) y++; } printf("%d", y); return 0; }[/collapse][collapse status="false" title="P1047 校门外的树"]题目描述某校大门外长度为L的马路上有一排树，每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴，马路的一端在数轴0的位置，另一端在L的位置；数轴上的每个整数点，即0,1,2,…,L，都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数，区域之间可能有重合的部分。现在要把这些区域中的树（包括区域端点处的两棵树）移走。你的任务是计算将这些树都移走后，马路上还有多少棵树。输入格式第一行有22个整数 L(1≤L≤10000) 和 M(1≤M≤100)，L代表马路的长度，M代表区域的数目，L和M之间用一个空格隔开。接下来的M行每行包含2个不同的整数，用一个空格隔开，表示一个区域的起始点和终止点的坐标。输出格式1个整数，表示马路上剩余的树的数目。输入输出样例输入500 3150 300100 200470 471输出298说明/提示NOIP2005普及组第二题对于20%的数据，区域之间没有重合的部分；对于其它的数据，区域之间有重合的情况。 ::aru:shy:: 一开始没想明白。。。借鉴的代码#include "stdio.h" int main() { int a[10010], b, c, d, e, f=0; scanf("%d%d", &b, &c); for (int i = 0; i <= b; i++) { a[i] = 1;//把有树的标记上 } for (int j = 0; j <= c - 1; j++) { scanf("%d%d", &d, &e); for (int k = d; k <= e; k++) { a[k] = 0;//被砍的记得改为0 } } for (int l = 0; l <= b; l++) { if (a[l] == 1) f++;//统计剩余的树 } printf("%d", f); return 0; }[/collapse][collapse status="false" title="P1427 小鱼的数字游戏"]题目描述小鱼最近被要求参加一个数字游戏，要求它把看到的一串数字（长度不一定，以0结束，最多不超过100个，数字不超过2^32-1），记住了然后反着念出来(表示结束的数字0就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了，你也不想想小鱼的整个脑袋才多大，其中一部分还是好吃的肉！所以请你帮小鱼编程解决这个问题。输入格式一行内输入一串整数，以0结束，以空格间隔。输出格式一行内倒着输出这一串整数，以空格间隔。输入输出样例输入3 65 23 5 34 1 30 0输出30 1 34 5 23 65 3#include "stdio.h" int main() { int a[101],i; for (i = 0;; i++) { scanf("%d", &a[i]); if (a[i] == 0) break; } for (i=i-1; i >= 0; i--) { printf("%d ", a[i]); } return 0; }[/collapse][collapse status="false" title="P1428 小鱼比可爱"]题目描述人比人，气死人；鱼比鱼，难死鱼。小鱼最近参加了一个“比可爱”比赛，比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排，头都朝向左边，然后每只鱼会得到一个整数数值，表示这只鱼的可爱程度，很显然整数越大，表示这只鱼越可爱，而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边，所以每只鱼只能看见在它左边的鱼的可爱程度，它们心里都在计算，在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。输入格式第一行输入一个整数 nn，表示鱼的数目。第二行内输入 nn 个整数，用空格间隔，依次表示从左到右每只小鱼的可爱程度。输出格式行内输出 nn 个整数，用空格间隔，依次表示每只小鱼眼中有多少只鱼不如自己可爱。输入输出样例输入64 3 0 5 1 2输出0 0 0 3 1 2说明/提示对于 100% 的数据,n≤100。#include "stdio.h" int main() { int n, a[101], b[101] = {0}, i, j, out = 0; scanf("%d", &n);//输入鱼的数目 for (i=0; i < n; i++) scanf("%d", &a[i]); for (i = 0; i < n; i++) { for (j = 0; j < i; j++) { if (a[i] > a[j]) b[i]++; } } for(i=0;i<n;i++) printf("%d ", b[i]); return 0; }[/collapse][collapse status="false" title="P2141 珠心算测验"]题目描述珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练，既能够开发智力，又能够为日常生活带来很多便利，因而在很多学校得到普及。某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合，集合中的数各不相同，然后要求学生回答：其中有多少个数，恰好等于集合中另外两个（不同的）数之和？最近老师出了一些测验题，请你帮忙求出答案。(本题目为2014NOIP普及T1)输入格式共两行，第一行包含一个整数nn，表示测试题中给出的正整数个数。第二行有nn个正整数，每两个正整数之间用一个空格隔开，表示测试题中给出的正整数。输出格式一个整数，表示测验题答案。输入输出样例输入41 2 3 4输出2说明/提示【样例说明】由1+2=3,1+3=4，故满足测试要求的答案为2。注意，加数和被加数必须是集合中的两个不同的数。【数据说明】对于100%的数据，3≤n≤100，测验题给出的正整数大小不超过10,000。#include "stdio.h" int main() { int n, a[101], flag[101] = {0}, i, j, out = 0; scanf("%d", &n); for (i=0; i < n; i++) scanf("%d", &a[i]); for (i = 0; i < n; i++) { for (j = i+1; j < n; j++) { for (int k = 0; k < n; k++) { if (a[i] + a[j] == a[k] && k != i && k != j&&flag[k]==0) { out++; flag[k] = 1; } } } } printf("%d",out); return 0; }[/collapse][collapse status="false" title="P1567 统计天数"]题目描述炎热的夏日，KC 非常的不爽。他宁可忍受北极的寒冷，也不愿忍受厦门的夏天。最近，他开始研究天气的变化。他希望用研究的结果预测未来的天气。经历千辛万苦，他收集了连续 N(1≤N≤10^6)的最高气温数据。现在，他想知道最高气温一直上升的最长连续天数。输入格式第 1 行：一个整数 N。 1 ≤ N ≤ 10^6第 2 行：N个空格隔开的整数，表示连续 N 天的最高气温。0≤ 最高气温 ≤10^9。输出格式1 行：一个整数，表示最高气温一直上升的最长连续天数。输入输出样例输入101 2 3 2 4 5 6 8 5 9输出5#include "stdio.h" int main() { long int N, a[10000001] = {0}, z = 1, out = 1; scanf("%ld", &N); for (int i = 0; i < N; i++) scanf("%ld", &a[i]); for (int i = 0; i < N; i++) { if (z > out) out = z; if (a[i] > a[i - 1]) z++; else z = 1; } printf("%ld", out); return 0; }[/collapse]
洛谷试炼场题解记录——循环！循环！循环！
[collapse status="false" title="P1008 三连击"]题目背景本题为提交答案题，您可以写程序或手算在本机上算出答案后，直接提交答案文本，也可提交答案生成程序。题目描述将1,2, \cdots ,91,2,⋯,9共99个数分成33组，分别组成33个三位数，且使这33个三位数构成1:2:31:2:3的比例，试求出所有满足条件的33个三位数。输入格式木有输入输出格式若干行，每行33个数字。按照每行第11个数字升序排列。输入输出样例输入无输出[button color="success" icon="" url="https://www.luogu.com.cn/problem/P1008" type=""]题目链接[/button]192 384 576...（输出被和谐了）#include "stdio.h" int main() { for (int i = 123; i < 333; i++) { int a[10] = { 0 }, b[10] = { 0 }, c[10] = { 0 }; a[1] = i % 100 % 10;//个位 a[2] = i % 100 / 10;//十位 a[3] = i / 100;//百位 b[1] = 2 * i % 10 % 10;//个位 b[2] = 2 * i % 100 / 10;//十位 b[3] = 2 * i / 100;//百位 c[1] = 3 * i % 10 % 10;//个位 c[2] = 3 * i % 100 / 10;//十位 c[3] = 3 * i / 100;//百位 if (a[1] * a[2] * a[3] * b[1] * b[2] * b[3] * c[1] * c[2] * c[3] == 362880 && a[1] + a[2] + a[3] + b[1] + b[2] + b[3] + c[1] + c[2] + c[3] == 45) { printf("%d %d %d\n", i, 2 * i, 3 * i); } } return 0; }[/collapse][collapse status="false" title="P1035 级数求和"]#include "stdio.h" int main() { int k,n=1; double s=0.0; scanf("%d", &k); while (s<=k) { s += 1.0 / n; n++; } printf("%d", n-1); return 0; }[/collapse][collapse status="false" title="P1423 小玉在游泳"]题目描述小玉开心的在游泳，可是她很快难过的发现，自己的力气不够，游泳好累哦。已知小玉第一步能游2米，可是随着越来越累，力气越来越小，她接下来的每一步都只能游出上一步距离的98%。现在小玉想知道，如果要游到距离x米的地方，她需要游多少步呢。请你编程解决这个问题。输入格式输入一个数字（不一定是整数，小于100m），表示要游的目标距离。输出格式输出一个整数，表示小玉一共需要游多少步。输入输出样例输入4.3输出3#include <stdio.h> int main() { float a=0,s=0,tmp=2; int i=0; scanf("%f", &a); while (s <= a) { s = tmp + s; tmp = tmp * 0.98; i++; } printf("%d", i); return 0; }[/collapse][collapse status="false" title="P1424 小鱼的航程(改进版)"]题目背景原来的题目太简单，现改进让小鱼周末也休息，请已经做过重做该题。题目描述有一只小鱼，它平日每天游泳 250 公里，周末休息（实行双休日)，假设从周 x(1\le x \le 7)x(1≤x≤7) 开始算起，过了 n(n\le 10^6)n(n≤10 6 ) 天以后，小鱼一共累计游泳了多少公里呢？输入格式输入两个整数x,n(表示从周x算起，经过n天）。输出格式输出一个整数，表示小鱼累计游泳了多少公里。输入输出样例输入3 10输出2000#include <stdio.h> int main() { int x, n=0,i,s=0; scanf("%d%d", &x, &n); for (int i = 0; i < n; i++) { if (x != 6 && x != 7) { s += 250; } else if (x == 7) { x = 0; } x++; } printf("%d", s); return 0; }[/collapse][collapse status="false" title="P1980 计数问题"]题目描述试计算在区间 11 到 nn的所有整数中，数字x(0 ≤ x ≤ 9)共出现了多少次？例如，在 1到11中，即在 1,2,3,4,5,6,7,8,9,10,11 中，数字 1 出现了 4 次。输入格式22个整数n,xn,x，之间用一个空格隔开。输出格式11个整数，表示xx出现的次数。输入输出样例输入11 1输出4说明/提示对于 100%的数据，1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。#include "stdio.h" int main() { int n, x, out = 0; scanf("%d%d", &n, &x); for (int i = 1; i <= n; i++) { int tmp , tmp1; tmp = i; while (tmp > 0) { tmp1 = tmp % 10; tmp = tmp / 10; if (tmp1 == x) out++; } } printf("%d", out); return 0; }[/collapse]
为了应对考试，重新复习学习c语言编程，重新开始新手村。。。此系列仅供记录[collapse status="false" title="P1422 小玉家的电费"]题目描述夏天到了，各家各户的用电量都增加了许多，相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写：据闽价电[2006]27号规定，月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行，月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行，月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下，电费通知单上应交电费的数目到底是否正确呢。请编写一个程序，已知用电总计，根据电价规定，计算出应交的电费应该是多少。输入格式输入一个整数，表示用电总计（单位以千瓦时计），不超过10000。输出格式输出一个数，保留到小数点后1位（单位以元计，保留到小数点后1位）。输入输出样例输入267输出121.5#include "stdio.h" int main() { int a; float b=0; scanf("%d", &a); if (a <= 150) { b = a * 0.4463; } if (a >= 151 && a <= 400) { b = 0.4463 * 150 + (a - 150) * 0.4663; } if(a>401) { b = 0.4463 * 150 + 250 * 0.4663 + (a - 400) * 0.5663; } printf("%.1f", b); return 0; }[/collapse][collapse status="false" title="P1085 不高兴的津津"]题目描述津津上初中了。妈妈认为津津应该更加用功学习，所以津津除了上学之外，还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴，而且上得越久就会越不高兴。假设津津不会因为其它事不高兴，并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排，看看下周她会不会不高兴；如果会的话，哪天最不高兴。输入格式输入包括7行数据，分别表示周一到周日的日程安排。每行包括两个小于10的非负整数，用空格隔开，分别表示津津在学校上课的时间和妈妈安排她上课的时间。输出格式一个数字。如果不会不高兴则输出0，如果会则输出最不高兴的是周几（用1, 2, 3, 4, 5, 6, 71,2,3,4,5,6,7分别表示周一，周二，周三，周四，周五，周六，周日）。如果有两天或两天以上不高兴的程度相当，则输出时间最靠前的一天。输入输出样例输入5 36 27 25 35 40 40 6输出3说明/提示noip2004普及组第1题#include "stdio.h" int main() { int a[7], b[7], c=0, i, max=0; for (i = 0; i < 7; i++) { scanf("%d%d", &a[i], &b[i]); if (a[i] + b[i] > 8 && a[i]+b[i]>max) { max = a[i] + b[i]; c = i+1; } } printf("%d", c); return 0; } [/collapse][collapse status="false" title="P1089 津津的储蓄计划"]题目描述津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱，津津会预算这个月的花销，并且总能做到实际花销和预算的相同。为了让津津学习如何储蓄，妈妈提出，津津可以随时把整百的钱存在她那里，到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划：每个月的月初，在得到妈妈给的零花钱后，如果她预计到这个月的月末手中还会有多于100元或恰好100元，她就会把整百的钱存在妈妈那里，剩余的钱留在自己手中。例如11月初津津手中还有83元，妈妈给了津津300元。津津预计11月的花销是180元，那么她就会在妈妈那里存200元，自己留下183元。到了11月月末，津津手中会剩下33元钱。津津发现这个储蓄计划的主要风险是，存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初，津津手中的钱加上这个月妈妈给的钱，不够这个月的原定预算。如果出现这种情况，津津将不得不在这个月省吃俭用，压缩预算。现在请你根据2004年1月到12月每个月津津的预算，判断会不会出现这种情况。如果不会，计算到2004年年末，妈妈将津津平常存的钱加上20％还给津津之后，津津手中会有多少钱。输入格式12行数据，每行包含一个小于350的非负整数，分别表示1月到12月津津的预算。输出格式一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况，输出-X，X表示出现这种情况的第一个月；否则输出到20042004年年末津津手中会有多少钱。注意，洛谷不需要进行文件输入输出，而是标准输入输出。输入输出样例输入29023028020030017034050 90 80 20060输出-7输入290 230 280 200 300 170 330 50 90 80 200 60输出1580#include "stdio.h" int main() { int hua, ziji = 0, h = 0; for (int i = 1; i <= 12; i++) { scanf("%d", &hua); ziji = ziji + 300 - hua; if (ziji < 0) { printf("-%d", i); return 0; } else { h = ziji / 100 + h; ziji = ziji % 100; } } printf("%d", 120 * h + ziji); return 0; }[/collapse][collapse status="false" title="P1909 买铅笔"]题目描述P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有3种包装的铅笔，不同包装内的铅笔数量有可能不同，价格也有可能不同。为了公平起 见，P老师决定只买同一种包装的铅笔。商店不允许将铅笔的包装拆开，因此P老师可能需要购买超过n支铅笔才够给小朋 友们发礼物。现在P老师想知道，在商店每种包装的数量都足够的情况下，要买够至少n支铅笔最少需要花费多少钱。输入格式第一行包含一个正整数n，表示需要的铅笔数量。接下来三行，每行用2个正整数描述一种包装的铅笔：其中第1个整数表示这种 包装内铅笔的数量，第2个整数表示这种包装的价格。保证所有的7个数都是不超过10000的正整数。输出格式11个整数，表示P老师最少需要花费的钱。输入输出样例输入572 250 3030 27输出54输入9998128 233128 2333128 666输出18407输入9999101 11111 99991111 9999输出89991说明/提示铅笔的三种包装分别是：2支装，价格为2;50支装，价格为30;30支装，价格为27。P老师需要购买至少57支铅笔。如果她选择购买第一种包装，那么她需要购买29份，共计2×29=58支，需要花费的钱为2×29=58。实际上，P老师会选择购买第三种包装，这样需要买22份。虽然最后买到的铅笔数 量更多了，为30×2=60支，但花费却减少为27×2=54，比第一种少。对于第二种包装，虽然每支铅笔的价格是最低的，但要够发必须买22份，实际的花费达到了30×2=60，因此P老师也不会选择。所以最后输出的答案是54。【子任务】子任务会给出部分测试数据的特点。如果你在解决题目中遇到了困难，可以尝试 只解决一部分测试数据。每个测试点的数据规模及特点如下表：上表中“整倍数”的意义为：若为KK，表示对应数据所需要的铅笔数量nn—定是每种包装铅笔数量的整倍数（这意味着一定可以不用多买铅笔)。#include<stdio.h> int main() { int n; scanf("%d", &n); int i; int min = 0; int a[3]; int b[3]; for (i = 0; i < 3; i++) { scanf("%d%d", &a[i], &b[i]); int N = 0; int sum = 0; while (1) { N += a[i]; sum += b[i]; if (N >= n) { break; } } if (i == 0) min = sum; if (min > sum) min = sum; } printf("%d", min); return 0; }[/collapse]