洛谷-入门6-函数与结构体3

张开发
2026/4/7 18:58:20 15 分钟阅读

分享文章

洛谷-入门6-函数与结构体3
P1304 哥德巴赫猜想题目描述输入一个偶数 N验证 4∼N 所有偶数是否符合哥德巴赫猜想任一大于 2 的偶数都可写成两个质数之和。如果一个数不止一种分法则输出第一个加数相比其他分法最小的方案。例如 10103755则 1055 是错误答案。输入格式第一行输入一个正偶数 N输出格式输出 2N−2​ 行。对于第 i 行首先先输出正偶数 2i2然后输出等号再输出加和为 2i2 且第一个加数最小的两个质数以加号隔开。输入输出样例输入 #1复制10输出 #1复制422 633 835 1037说明/提示数据保证4≤N≤10000。实现代码#include bits/stdc.h using namespace std; const int N1010; struct node{ int id; int c,m; int sum,cnt; }; node a[N]; int n; int fun(int x){ for(int i2;i*ix;i){ if(x%i0){ return 0; } } return 1; } int main(){ cinn; for(int i4;in;ii2){ for(int j2;ji;j){ if(fun(j)1fun(i-j)1){ printf(%d%d%d\n,i,j,i-j); break; } } } return 0; }P1217 [USACO1.5] 回文质数 Prime Palindromes题目描述因为 151 既是一个质数又是一个回文数从左到右和从右到左是看一样的所以 151 是回文质数。写一个程序来找出范围 [a,b](5≤ab≤100,000,000)一亿间的所有回文质数。输入格式第一行输入两个正整数 a 和 b。输出格式输出一个回文质数的列表一行一个。输入输出样例输入 #1复制5 500输出 #1复制5 7 11 101 131 151 181 191 313 353 373 383说明/提示Hint 1: Generate the palindromes and see if they are prime.提示 1: 找出所有的回文数再判断它们是不是质数素数.Hint 2: Generate palindromes by combining digits properly. You might need more than one of the loops like below.提示 2: 要产生正确的回文数你可能需要几个像下面这样的循环。题目翻译来自NOCOW。USACO Training Section 1.5产生长度为 5 的回文数for (d1 1; d1 9; d12) { // 只有奇数才会是素数 for (d2 0; d2 9; d2) { for (d3 0; d3 9; d3) { palindrome 10000*d1 1000*d2 100*d3 10*d2 d1;//(处理回文数...) } } }实现代码#includebits/stdc.h using namespace std; int a[100000]; int fu(int x){ if((1000xx9999)||(100000xx999999)){ return 0; } return 1; } int fun(int x){ for(int i2;i*ix;i){ if(x%i0){ return 0; } } return 1; } int f(int x){ if(x10){ return 1; } else if(x11){ return 1; } else{ int t0; while(x!0){ a[t]x%10; xx/10; t; } for(int i0;it/2;i){ if(a[i]!a[t-1-i]){ return 0; } } return 1; } } int main(){ int n,m; cinnm; mmin(9999999,m); if(n%20){ nn1; } for(int in;im;ii2){ if(fu(i)0) continue; if(f(i)0) continue; if(fun(i)0) continue; coutiendl; } return 0; }P2415 集合求和题目描述给定一个集合 s集合元素数量 ≤30求出此集合所有子集元素之和。输入格式集合中的元素元素 ≤1000输出格式s 所有子集元素之和。输入输出样例输入 #1复制2 3输出 #1复制10说明/提示【样例解释】子集为∅,{2},{3},{2,3}和为 232310。【数据范围】对于 100% 的数据1≤∣s∣≤301≤si​≤1000s 所有子集元素之和 ≤1018。实现代码#include bits/stdc.h using namespace std; const int N1010; int a[N]; long long n,sum; int main(){ while(cina[n]); for(int i0;in;i){ suma[i]; } sum*pow(2,n-2); coutsum; return 0; }P5743 【深基7.习8】猴子吃桃题目描述一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半又贪嘴多吃了一个接下来的每一天它都会吃剩余的桃子的一半外加一个。第 n 天早上起来一看只剩下 1 个桃子了。请问小猴买了几个桃子输入格式输入一个正整数 n表示天数。输出格式输出小猴买了多少个桃子。输入输出样例输入 #1复制4输出 #1复制22说明/提示数据保证1≤n≤20。实现代码#include bits/stdc.h using namespace std; const int N1010; int a[N]; long long n,sum1; int main(){ cinn; for(int i1;in;i){ sum(sum1)*2; } coutsum; return 0; }P5744 【深基7.习9】培训题目描述某培训机构的学员有如下信息姓名字符串年龄周岁整数去年 NOIP 成绩整数且保证是 5 的倍数经过为期一年的培训所有同学的成绩都有所提高提升了 20%当然 NOIP 满分是 600 分不能超过这个得分。输入学员信息请设计一个结构体储存这些学生信息并设计一个函数模拟培训过程其参数是这样的结构体类型返回同样的结构体类型并输出学员信息。输入格式第一行输入一个正整数 n表示学员个数。第二行开始往下 n 行。每行首先是一个字符串表示学员姓名再是一个整数表示学员年龄再是一个整数为去年 NOIP 成绩。输出格式输出 n 行每行首先输出一个字符串表示学生姓名再往后两个整数表示经过一年的培训后学员的年龄和他们今年的 NOIP 成绩。以空格隔开。输入输出样例输入 #1复制3 kkksc03 24 0 chen_zhe 14 400 nzhtl1477 18 590输出 #1复制kkksc03 25 0 chen_zhe 15 480 nzhtl1477 19 600说明/提示数据保证1≤n≤5。年龄为 0∼100含 0 与 100的整数。成绩为 0∼600含 0 与 600的 5 的整倍数。实现代码#include bits/stdc.h using namespace std; const int N1010; struct node{ string name; int age; int score; }; node a[N]; long long n,sum1; int main(){ cinn; for(int i1;in;i){ cina[i].namea[i].agea[i].score; a[i].scorea[i].score*1.2; a[i].scoremin(600,a[i].score); couta[i].name a[i].age1 a[i].scoreendl; } return 0; }

更多文章