洛谷题单
循环结构
P1217 [USACO1.5] 回文质数 Prime Palindromes - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
1,所有四+偶数位的回文数都可被11整除
2,先找回文数再判断质数
#include<stdio.h>
#include<math.h>
int check1(int x)//检查位数,没有四及以上偶数位的回文质数
{
if ((x >= 1000 && x <= 9999) || (x >= 100000 && x <= 999999) || x > 9999999)
{
return 0;
}
else { return 1; }
}
int check2(int x)//判断回文
{
int a[20],flag=1;
while (x>0)
{
a[flag] = x % 10;
x /= 10;
flag++;
}
for (int i = 1; i <= flag / 2; i++)
{
if (a[i] != a[flag - i]) return 0;//不符合回文
}
return 1;
}
int check3(int x)//判断质数
{
for (int i = 2; i <= sqrt(x); i++)
{
if (x % i == 0) { return 0; }
}
return 1;
}
int main()
{
int c=0,d=0;
scanf("%d%d",&c, &d);
if (c % 2 == 0)c++;
d = d < 9999999 ? d : 9999999;
for (int i = c; i <= d; i += 2)
{
if (check1(i) == 0)continue;
if (check2(i) == 0)continue;
if (check3(i) == 0)continue;
printf("%d\n", i);
}
return 0;
}
P1423 小玉在游泳 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
由数列求和公式可解
#include<stdio.h>
#include<math.h>
int main()
{
double s=0,n=0;
scanf("%lf",&s);
n = log(1.0 - s * 0.01) / log(0.98);
int h = (int)n;
if (n != h)h++;
printf("%d", h);
return 0;
}
P1307 [NOIP2011 普及组] 数字反转 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
sum=sum*10+k;把原sum整个前移一位
#include<stdio.h>
#include<math.h>
int main()
{
int n;
scanf("%d", &n);
if (n < 0) { printf("-"); n = -n; }
int sum = 0;
while (n != 0)
{
int k = n % 10;
sum = sum * 10 + k;
n /= 10;
}
printf("%d", sum);
return 0;
}
P1720 月落乌啼算钱(斐波那契数列) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
1,原式是斐波那契数列的变式
2,三个变量表示n-2,n-1,n,互相前推
3,2^48用int会炸
#include<stdio.h>
int main()
{
int n; double a = 1, b = 1, c = 0;
scanf("%d", &n);
for (int i = 3; i <= n; i++)
{
c = a + b;
a = b;
b = c;
}
printf("%.2lf", c);
return 0;
}
P5724 【深基4.习5】求极差 / 最大跨度值 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
不开数组,只需要两个变量存放最大最小值
#include<stdio.h>
int main()
{
int n, temp, min = 999999999, max =-1 ;
scanf("%d", &n);
for (int i = 0; i <n; i++)
{
scanf("%d", &temp);
max = max > temp ? max : temp;
min = min < temp ? min : temp;
}
printf("%d", max-min);
return 0;
}
P1420 最长连号 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<stdio.h>
int main()
{
int n, new=0,ans=0,temp=-2, max = 0;
scanf("%d", &n);
for (int i = 0; i <n; i++)
{
scanf("%d", &new);
if (new == temp + 1) { ans++; }
else { ans = 1; }
temp = new;
max = max > ans ? max : ans;
}
printf("%d", max);
return 0;
}
P1075 [NOIP2012 普及组] 质因数分解 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
有唯一分解定理:一个数能且只能分解为一组质数的乘积。所以题目中两个质数的积必然只有这两个因数
#include<stdio.h>
int main()
{
int n,i;
scanf("%d", &n);
for (i = 2; i <n; i++)
{
if (n % i == 0)break;
}
printf("%d", n/i);
return 0;
}
P5725 【深基4.习8】求三角形 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
%02d输出,自动补零
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
//输出正方形
for (int i = 1; i <=n*n; i++)
{
printf("%02d", i);
if (i % n == 0) { printf("\n"); }
}
printf("\n");
//输出三角形
int num = 1;
for (int i = 1; i <= n; i++)
{
for (int j = 0; j < n - i; j++) { printf(" "); }
for (int k = 1; k <= i; k++)
{
printf("%02d", num);
num++;
}
printf("\n");
}
return 0;
}
P5726 【深基4.习9】打分 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
注意分数的精度是double
#include<stdio.h>
int main()
{
float n, c, tol = 0, max = -1, min = 100;
double anu = 0;
scanf("%f\n", &n);
for (int i = 0; i <n; i++)
{
scanf("%f", &c);
tol += c;
max = max > c ? max : c;
min = min < c ? min : c;
}
anu = ((double)(tol - min - max)) / (n - 2.0);
printf("%.2lf",anu);
return 0;
}
P4956 [COCI2017-2018#6] Davor - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
数学解法,分情况解不定方程
#include<stdio.h>
int main()
{
int n;
scanf("%d\n", &n);
n /= 364;
if(n<=103){printf("%d\n%d\n",n-3,1);}
else
{
if (n % 3 == 0) { printf("%d\n%d\n", 99, (n - 99)/3); }
if (n % 3 == 1) { printf("%d\n%d\n", 100, (n - 100) / 3); }
if (n % 3 == 2) { printf("%d\n%d\n", 98, (n - 98) / 3); }
}
return 0;
}
P1089 [NOIP2004 提高组] 津津的储蓄计划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<stdio.h>
int main()
{
int n,pos=0,flag=0,put=0;
for (int i = 1; i <= 12; i++)
{
pos += 300;
scanf("%d", &n);
pos -= n;
if (pos < 0) { flag = -i; break; }
if (pos >= 100)
{
put += pos / 100;
pos %= 100;
}
}
if (pos < 0) { printf("%d", flag);}
else
{
printf("%d", put * 120 + pos);
}
return 0;
}
数组
P1428 小鱼比可爱 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<stdio.h>
int main()
{
int n, a[1000] = {0};
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
int flag = 0;
for (int j = 0; j < i; j++)
{
if (a[j] < a[i]) { flag++; }
}
printf("%d ", flag);
}
return 0;
}
P1427 小鱼的数字游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<stdio.h>
int main()
{
int a[1000] = {0};
int flag = 0;
for (int i = 0;; i++)
{
scanf("%d", &a[i]);
if (a[i] == 0)
{
flag = i; break;
}
}
for (int j = flag-1; j >=0; j--)
{
printf("%d ", a[j]);
}
return 0;
}
P5727 【深基5.例3】冰雹猜想 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
int a[1000] = {0};
int flag = 0;
for (int i = 0;; i++)
{
a[i] = n;
if (n == 1) { flag = i; break; }
if (n % 2 == 1) { n = 3 * n + 1; }
else { n /= 2; }
}
for (int j = flag; j >=0; j--)
{
printf("%d ", a[j]);
}
return 0;
}
P1047 [NOIP2005 普及组] 校门外的树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<stdio.h>
int main()
{
int l,m,u,v;
int a[100000] = { 0 };
int tol = 0;
scanf("%d %d", &l,&m);
for (int i = 1;i<=m; i++)
{
scanf("%d %d", &u, &v);
for (int i = u;i<=v; i++)
{
a[i] = 1;
}
}
for (int i = 0; i <=l; i++)
{
if (a[i] == 0) { tol++; }
}
printf("%d", tol);
return 0;
}
P5728 【深基5.例5】旗鼓相当的对手 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
scanf("%d", &n);
int a[1010][4] = { {0,0} };
int tol = 0;
for (int i = 0;i<n; i++)
{
scanf("%d %d %d", &a[i][0], &a[i][1],&a[i][2]);
a[i][3] = a[i][0] + a[i][1] + a[i][2];
for (int j = 0;j<i; j++)
{
if ((abs(a[i][0] - a[j][0]) <= 5) && (abs(a[i][1] - a[j][1]) <= 5) && (abs(a[i][2] - a[j][2]) <= 5) && (abs(a[i][3] - a[j][3]) <= 10)) { tol++; }
}
}
printf("%d", tol);
return 0;
}
P5732 【深基5.习7】杨辉三角 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<stdio.h>
int main()
{
int n;
scanf("%d", &n);
int a[100][100] = { {0} };
for (int i = 0;i<n; i++)
{
a[i][0] = 1;
a[i][i] = 1;
}
for (int i = 2; i < n; i++)
{
for (int j = 1; j < i; j++)
{
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}