第一题数的分解
题目描述本题为填空题只需要算出结果后在代码中使用输出语句将所填结果输出即可。把 2019 分解成 3 个各不相同的正整数之和并且要求每个正整数都不包含数字 2和 4一共有多少种不同的分解方法注意交换 3 个整数的顺序被视为同一种方法例如 10001001181000100118 和 10011000181001100018 被视为同一种。运行限制最大运行时间1s最大运行内存: 128M枚举第一个数和第二个数第三个数就等于总数减去前两个数之和
然后要确保方法相同即i #includeusing namespace std;bool check(int x){while(x){int t x % 10;if(t 2 || t 4) return false;x / 10;}return true;}int main(){int ans 0;for(int i 1; i < 2019; i)for(int j i 1; j j ;}}cout<} 想到回文日期那道题就顺便把检查日期是否合法给打了一遍 这道题就是枚举加判断 #includeusing namespace std;bool isleap(int year){return year % 400 0 || (year % 4 0 0);}bool isright(int n){int year n / 10000;int month n / 100 % 100;int day n % 100;if(day > 31) return false;if(month > 12 || month 29) return false;else if (!isleap(year) if(month 4 || month 6 || month 9 || month 11)if(day > 30) return false;return true;}bool isright2(int n){int year n / 10000;int month n / 100 % 100;int day n % 100;if(day > 30) return false;if(month ! 6) return false;return true;}int main(){int a 2012, b 3, c 12;for(int i 19480612; i < 20120312; i){if(isright2(i) 0 0 0){cout<第三题成绩统计题目描述小蓝给学生们组织了一场考试卷面总分为 100 分每个学生的得分都是一个 0 到 100 的整数。如果得分至少是 60 分则称为及格。如果得分至少为 85 分则称为优秀。请计算及格率和优秀率用百分数表示百分号前的部分四舍五入保留整 数。输入描述输入的第一行包含一个整数 n (1≤n≤104)表示考试人数。接下来 n 行每行包含一个 0 至 100 的整数表示一个学生的得分。输出描述输出两行每行一个百分数分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。输入输出样例输入 780925674881000输出 71%43% 至少可以等于然后要除先乘100四舍五入round函数 #include#include#includeusing namespace std;int n;int main(){scanf("%d", int x 0 , y 0, t n;while(t --){int a;scanf("%d", if(a > 85)x;else if( a > 60)y;}float i (x y) * 100.0 / n;float j x * 100.0 / n;cout< 51 -2 -1 3 5 8 最长上升子序列问题 状态是从 1到 n-p的最小质数套模板 为负初始化为无穷小 n * 1e5 > int用long long,虽然题目测试数据没有但是分析可能会 #include#includeusing namespace std;const int N 10010;typedef long long LL;int n;LL a[N], f[N];bool check(int x){for(int i 2; i < x / i; i)if(x % i 0)return false;return true;}int D(int x){if(x 1) return 1;int i;for(i 2; i < x; i)if(check(i) 0)break;return i;}int main(){scanf("%d", for(int i 1; i < n; i) scanf("%lld", memset(f, -0x3f, sizeof f);f[1] a[1];for(int i 1; i < n; i){int d D(n - i);for(int j 1; j n) break;f[i j] max(f[i j], f[i] a[j i]);}}cout<第二题猜生日
题目描述本题为填空题只需要算出结果后在代码中使用输出语句将所填结果输出即可。今年的植树节2012 年 3 月 12 日小明和他的叔叔还有小伙伴们一起去植树。休息的时候小明的同学问他叔叔多大年纪他叔叔说“我说个题目看你们谁先猜出来”“把我出生的年月日连起来拼成一个 8 位数月、日不足两位前补 0正好可以被今天的年、月、日整除”他想了想又补充到“再给个提示我是 6 月出生的。”根据这些信息请你帮小明算一下他叔叔的出生年月日。格式是年月日连成的 8 位数。例如如果是 1948 年 6 月 12 日就写19480612。运行限制最大运行时间1s最大运行内存: 128M样例输入
样例输出