牛客网学习笔记
库博酱
OpenGL && D3D11 渲染开发
展开
-
大整数的因子
题目描述:已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k.输入描述:若干个非负整数c,c的位数<=30每行一个c输出描述:每一个c的结果占一行若存在满足 c%k == 0 的k,输出所有这样的k,中间用空格隔开,最后一个k后面没有空格。若没有这样的k则输出"none"注意整数溢出问题不要对-1进行计算#include <cstdio>#include <iostream>#include &原创 2021-03-24 19:08:36 · 100 阅读 · 0 评论 -
中位数
题目描述:中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数). 给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)。输入描述:该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1<=N<=10000.接着N行为N个数据的输入,N=0时结束输入。输出描述:输出中位数,每一组测试数据输出一行。#include <cstdio>#include <io原创 2021-03-24 15:37:50 · 459 阅读 · 0 评论 -
查找学生信息
题目描述:输入N个学生的信息,然后进行查询。输入描述:输入的第一行为N,即学生的个数(N<=1000)接下来的N行包括N个学生的信息,信息格式如下:01 李江 男 2102 刘唐 男 2303 张军 男 1904 王娜 女 19然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:02030104输出描述:输出M行,每行包括一个对应于查询的学生的信息。如果没有对应的学生信息,则输出“No Answer!”#include原创 2021-03-23 14:58:26 · 493 阅读 · 0 评论 -
反序输出
题目描述:输入任意4个字符(如:abcd), 并按反序输出(如:dcba)。输入描述:题目可能包含多组用例,每组用例占一行,包含4个任意的字符。输出描述:对于每组输入,请输出一行反序后的字符串。#include <cstdio>#include <iostream>#include <string>using namespace std;int main(){ string str; while(cin >> str){原创 2021-03-23 11:18:06 · 868 阅读 · 0 评论 -
高精度加法
/*输入1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678900输出370370367037037036703703703670*/#include <iostream>#include <string>#include <algorithm>using namespace std;void plusAB2A(strin原创 2021-03-22 23:22:21 · 69 阅读 · 0 评论 -
火星A + B
/* 读入两个不超过25位的火星正整数A和B,计算A+B。需要注意的是:在火星上,整数不是单一进制的,第n位的进制就是第n个素数。例如:地球上的10进制数2,在火星上记为“1,0”,因为火星个位数是2进制的;地球上的10进制数38,在火星上记为“1,1,1,0”,因为火星个位数是2进制的,十位数是3进制的,百位数是5进制的,千位数是7进制的……输入:1,0 2,14,2,0 1,2,01 10,6,4,2,10 0输出:1,0,11,1,1,01,0,0,0,0,0*/#incl原创 2021-03-21 13:24:05 · 236 阅读 · 0 评论 -
递归
递归:直接或间接调用自身。条件:递归出口递归调用例子1:n的阶乘#include <cstdio>#include <iostream>using namespace std;long long Factorial(int n){ if(n == 0){ return 1; } return n * Factorial(n - 1);}int main(){ int n; while(~scanf("%d", &n)){ prin原创 2021-03-20 20:17:48 · 75 阅读 · 0 评论 -
贪心策略
贪心策略:总是做出当前最好的选择。步骤:问题分解成为多个子问题。子问题求局部最优解。局部最优解组合成原问题的解。#include <iostream>#include <algorithm>#include <cstdio>using namespace std;const int MAXN = 1000;struct JavaBean{ double weight; double cost;};JavaBean arr[MAXN];原创 2021-03-20 16:32:53 · 70 阅读 · 0 评论 -
数字之和
题目描述:对于给定的正整数 n,计算其十进制形式下所有位置数字之和,并计算其平方的各位数字之和。输入描述:每行输入数据包括一个正整数n(0<n<40000)。输出描述:对于每个输入数据,计算其各位数字之和,以及其平方值的数字之和,输出在一行中,之间用一个空格分隔,但行末不要有空格。#include <iostream>using namespace std;void hanshu(int x, int sign){ int sum = 0; whil原创 2021-03-19 20:43:00 · 155 阅读 · 0 评论 -
找最小数
题目描述:第一行输入一个数n,1 <= n <= 1000,下面输入n行数据,每一行有两个数,分别是x y。输出一组x y,该组数据是所有数据中x最小,且在x相等的情况下y最小的。输入描述:输入有多组数据。每组输入n,然后输入n个整数对。输出描述:输出最小的整数对。#include <iostream>using namespace std;const int MAX = 1000;int main(){ int n; while(~scanf(原创 2021-03-19 20:20:10 · 530 阅读 · 0 评论 -
守形数
题目描述:守形数是这样一种整数,它的平方的低位部分等于它本身。 比如25的平方是625,低位部分是25,因此25是一个守形数。 编一个程序,判断N是否为守形数。输入描述:输入包括1个整数N,2<=N<100。输出描述:可能有多组测试数据,对于每组数据,输出"Yes!”表示N是守形数。输出"No!”表示N不是守形数。#include <iostream>#include <cstdio>using namespace std;string IntTo原创 2021-03-19 16:58:14 · 299 阅读 · 0 评论 -
矩阵幂
题目描述:给定一个n*n的矩阵,求该矩阵的k次幂,即P^k。输入描述:第一行:两个整数n(2<=n<=10)、k(1<=k<=5),两个数字之间用一个空格隔开,含义如上所示。接下来有n行,每行n个正整数,其中,第i行第j个整数表示矩阵中第i行第j列的矩阵元素Pij且(0<=Pij<=10)。另外,数据保证最后结果不会超过10^8。输出描述:对于每组测试数据,输出其结果。格式为:n行n列个整数,每行数之间用空格隔开,注意,每行最后一个数后面不应该有多余的空格。原创 2021-03-19 16:09:51 · 169 阅读 · 0 评论 -
矩阵
用结构体表示矩阵:const int MAXN = 100;struct Matrix { int row, col; int matrix[MAXN][MAXN]; Matrix(int r, int c) : row(r), col(c){} //构造函数}考点:矩阵相加矩阵相乘矩阵转置矩阵求幂矩阵的输入输出:void InputMatrix(Matrix& x){ for(int i = 0; i < x.row; ++i){ for(int j原创 2021-03-19 14:01:28 · 169 阅读 · 0 评论 -
字符串的反码
题目描述:一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。如果这是一个小写字符,则它和字符’a’的距离与它的反码和字符’z’的距离相同;如果是一个大写字符,则它和字符’A’的距离与它的反码和字符’Z’的距离相同;如果不是上面两种情况,它的反码就是它自身。 举几个例子,'a’的反码是’z’;'c’的反码是’x’;‘W’的反码是’D’;‘1’的反码还是’1’;’′的反码还是′'的反码还是'′的反码还是′’。 一个字符串的反码定义为其所有字符的反码。我们的任务就是计原创 2021-03-19 11:51:48 · 1006 阅读 · 0 评论 -
计算两个矩阵的乘积
题目描述:计算两个矩阵的乘积,第一个是23,第二个是32。输入描述:输入为两个矩阵,其中一个为23的矩阵,另一个为32的矩阵。输出描述:一个2*2的矩阵(每一个数字后都跟一个空格)。#include <iostream>using namespace std;int main(){ int a[2][3], b[3][2], c[2][2] = {0}; for(int i = 0; i < 2; i++){ for(int j = 0;原创 2021-03-19 11:26:19 · 1326 阅读 · 0 评论 -
字符串链接
题目描述:不用strcat 函数,自己编写一个字符串链接函数MyStrcat(char dstStr[],charsrcStr[])。输入描述:两个字符串,字符串由小写字母组成。输出描述:链接后的字符串。#include <iostream>#include <string>#include <vector>using namespace std;vector<char> arr;int main(){ string a, b原创 2021-03-18 23:29:52 · 100 阅读 · 0 评论 -
浮点数加法
题目描述:求2个浮点数相加的和 题目中输入输出中出现浮点数都有如下的形式: P1P2…Pi.Q1Q2…Qj 对于整数部分,P1P2…Pi是一个非负整数 对于小数部分,Qj不等于0。输入描述:对于每组案例,每组测试数据占2行,分别是两个加数。输出描述:每组案例是n行,每组测试数据有一行输出是相应的和。输出保证一定是一个小数部分不为0的浮点数。#include <iostream>using namespace std;string add(string sa, string s原创 2021-03-18 20:19:15 · 605 阅读 · 0 评论 -
ZOJ
题目描述:读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。输入描述:每组用例占一行,包含ZOJ三个字符。1<=length<=100。输出描述:对于每组输入,请输出一行,表示按照要求处理后的字符串。具体可见样例。#include<iostream>using namespace std;int main(){ string s=""; int c[3]={0};原创 2021-03-18 00:12:53 · 73 阅读 · 0 评论 -
加减乘除
题目描述:根据输入的运算符对输入的整数进行简单的整数运算。 运算符只会是加+、减-、乘*、除/、求余%、阶乘!六个运算符之一。 输出运算的结果,如果出现除数为零,则输出“error”,如果求余运算的第二个运算数为0,也输出“error”。输入描述:输入为一行。先输入第一个整数,空格输入运算符,然后再空格输入第二个整数,回车结束本次输入。如果运算符为阶乘!符号,则不输入第二个整数,直接回车结束本次输入。输出描述:可能有多组测试数据,对于每组数据,输出一行。输出对输入的两个(或一个)数,根据输入的原创 2021-03-17 23:16:19 · 301 阅读 · 0 评论 -
数组逆置
题目描述:输入一个字符串,长度小于等于200,然后将数组逆置输出。输入描述:测试数据有多组,每组输入一个字符串。输出描述:对于每组输入,请输出逆置后的结果。#include <cstdio>#include <iostream>#include <stack>using namespace std;int main(){ stack<char> str; string strr; while(cin >>原创 2021-03-16 23:49:54 · 293 阅读 · 0 评论 -
找x
题目描述:输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。输入描述:测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。输出描述:对于每组输入,请输出结果。#include <cstdio>#include <iostream>using namespace std;int main(){ int n, x; while(~scanf("%d原创 2021-03-16 23:39:31 · 113 阅读 · 0 评论 -
数字求和
题目描述:给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少?输入描述:输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。输出描述:可能有多组测试数据,对于每组数据,输出一行,给出一个正整数,是5个数中小于a的数的和。#include <cstdio>#include <iostream>#include <algorithm>using namespace std;int main(){ i原创 2021-03-16 23:28:25 · 93 阅读 · 0 评论 -
字符串排序
题目描述:输入一个长度不超过20的字符串,对所输入的字符串,按照ASCII码的大小从小到大进行排序,请输出排序后的结果。输入描述:一个字符串,其长度n<=20。输出描述:输入样例可能有多组,对于每组测试样例,按照ASCII码的大小对输入的字符串从小到大进行排序,输出排序后的结果。#include <iostream>#include <cstdio>#include <string>#include <algorithm>using原创 2021-03-15 23:29:19 · 434 阅读 · 0 评论 -
字串计算
题目描述:给出一个01字符串(长度不超过100),求其每一个子串出现的次数。输入描述:输入包含多行,每行一个字符串。输出描述:对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。#include <cstdio>#include <iostream>#include <string>#include <map>using namespace std;int main(){ string str原创 2021-03-15 23:23:41 · 166 阅读 · 0 评论 -
约数的个数
题目描述:输入n个整数,依次输出每个数的约数的个数。输入描述:输入的第一行为N,即数组的个数(N<=1000)接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)输出描述:可能有多组输入数据,对于每组输入数据,输出N行,其中每一行对应上面的一个数的约数的个数。#include <cstdio>#include <iostream>#include <cmath>#include <vector&原创 2021-03-11 20:27:57 · 84 阅读 · 0 评论 -
质因数的个数
题目描述:求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=22235,共有5个质因数。输入描述:可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。输出描述:对于每组数据,输出N的质因数的个数。#include <cstdio>#include <iostream>#include <vector>#include <cmath>using namespace std;v原创 2021-03-11 19:38:00 · 75 阅读 · 0 评论 -
素数(素数筛法)
题目描述:输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。输入描述:输入有多组数据。每组一行,输入n。输出描述:输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。#include <cstdio>#include <iostream>#include <vector>using原创 2021-03-10 20:43:28 · 229 阅读 · 0 评论 -
素数筛法
#include <cstdio>#include <iostream>#include <cmath>#include <vector>using namespace std;const int MAXN = 1e5;vector<int> prime;bool isPrime[MAXN];void Initial(){ for (int i = 0; i < MAXN; ++i){ //fill(is原创 2021-03-10 19:59:34 · 60 阅读 · 0 评论 -
素数判定
问题描述:给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。输入:测试数据有多组,每组输入一个数n。输出:对于每组输入,若是素数则输出yes,否则输入no。#include <cstdio>#include <iostream>#include <cmath>using namespace std;int main(){ int n; while (~scanf("%d", &n)){ bool s原创 2021-03-10 19:17:07 · 317 阅读 · 0 评论 -
求最小公倍数
#include <cstdio>#include <iostream>using namespace std;int GCD(int a, int b){ if (b == 0)return a; else return GCD(b, a % b);}int main(){ int a, b; while (scanf("%d%d", &a, &b)){ printf("%d", (a *原创 2021-03-10 18:43:42 · 66 阅读 · 0 评论 -
最大公约数
题目描述:输入两个正整数,求其最大公约数。#include <cstdio>#include <iostream>using namespace std;int main(){ int m, n; while (~scanf("%d%d", &m, &n)){ int mod = m % n; int temp; if (mod == 0) printf("%d", mod);原创 2021-03-10 18:14:11 · 98 阅读 · 0 评论 -
M进制转换为N进制
问题描述:输入的第一行包括两个整数:M和N(2<=M,N<=36)。下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。注意输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。输入:10 211输出:1011#include <cstdio>#include <iostream>#include <string>#include <vector>using namespace st原创 2021-03-10 16:41:48 · 1088 阅读 · 0 评论 -
十六进制转换为十进制
问题描述:写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串(注意可能存在的一个测试用例里的多组数据)。输入:0xA输出:10#include <cstdio>#include <iostream>#include <vector>#include <string>using namespace std;vector<char> conclude;int CharToInt(char x){ i原创 2021-03-09 21:44:05 · 7080 阅读 · 3 评论 -
十进制转换为二进制数
问题描述:大家都知道,数据在计算机里中存储是以二进制的形式存储的。 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。输入:23535262456275989835输出:101111000010111101001000000110110111101001111110001101010001011#include <cstd原创 2021-03-09 20:59:46 · 264 阅读 · 0 评论 -
学分绩点
问题描述:北京大学对本科生的成绩施行平均学分绩点制(GPA)。既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。 公式如下: 实际成绩 绩点 90——100 4.0 85——89 3.7 82——84 3.3 78——81 3.0 75——77 2.7 72——74 2.3 68——71 2.0 64——67 1.5 60——63 1.0 60以下 0 1.一门课程的学分绩点=该课绩点*该课学分 2.总评绩点=所有学科绩点之和/所有课程学分之和 现要求你编写程序求出某人A的总评绩点(GPA)原创 2021-03-09 20:13:24 · 482 阅读 · 0 评论 -
小白鼠排队
问题描述:N只小白鼠(1 <= N <= 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色用“red”,“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。下面有N行,每行是一只白鼠的信息。第一个为不大于100的正整数,表示白鼠的重量,;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。注意:白鼠的原创 2021-03-09 16:23:07 · 93 阅读 · 0 评论 -
n的阶乘
输入一个整数n,输出n的阶乘(每组测试用例可能包含多组数据,请注意处理)#include <cstdio>#include <iostream>using namespace std;int main (){ int n; while(~scanf("%d", &n)){ int sum = 1; for(int i = 1; i <= n; ++i){ sum *= i;原创 2021-03-09 16:05:43 · 231 阅读 · 0 评论 -
神奇的口袋
题目描述:有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。输入:3202020输出:3#include<iostream>using namespace std; int a[100];原创 2021-03-09 15:41:34 · 63 阅读 · 0 评论 -
Digital Roots
问题描述:The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the pr原创 2021-03-09 15:16:24 · 97 阅读 · 0 评论