哪个网站适合 做红本抵押,潜江做网站的公司,马鞍山网站建设,学而思最早是做网站的吗1、MT1152韩信又生气了
韩信点兵(大于10人)#xff0c;三个三个一排少1个人#xff0c;五个五个一排又少1个人#xff0c;七个七个一排还少1个人。韩信生气了#xff0c;从别的队伍里调来一个人!这样不管是三个一排五个一排还是七个一排都完美了。问原本最少应该有多少人。…1、MT1152韩信又生气了
韩信点兵(大于10人)三个三个一排少1个人五个五个一排又少1个人七个七个一排还少1个人。韩信生气了从别的队伍里调来一个人!这样不管是三个一排五个一排还是七个一排都完美了。问原本最少应该有多少人。
格式
输入格式
无
输出格式
输出整型
样例 1
输入
无输出
104
解决思路
实质上这个题目和前面的几个没有太大的区别只是前面的都说超出这个说缺少。而解决的时候也不需要太拧巴只需要逆向思考既然说3个一排站缺一个那么就是有一排多出来2个即余数为2同理5个一排少1个就是有一排多出来4个即余数为47个一排少1个就是有一排多出来6个。然后就可以写代码了。
实现代码
#includebits/stdc.h using namespace std;int main( )
{int x 10;while(x){if(x%32 x%54 x%76){cout x;break;}}return 0;
}
2、MT1153真因子
输入正整数N计算其所有真因子之和。自然数的真因子是严格小于该数的除数。
格式
输入格式
输入正整数N
输出格式
输出整型
样例 1
输入
10
复制
输出
8备注
N2
相关知识点 因子因子是指能够整除某个整数而不产生余数的数。例如整数A除B得出结果是没有余数的整数就称B是A的因子。 真因子除了整数本身以外的所有因子。 总结来说 整数的因子包括它本身和其他能够整除它的整数。但是真因子是指除了整数本身以外的所有因子。换句话说真因子不包括整数本身。例如整数12的因子包括1、2、3、4、6和12。其中真因子是1、2、3、4和6因为它们都能整除12而12本身不被认为是真因子。 实现代码
#includebits/stdc.h using namespace std;int main( )
{int N,sum 0;cin N;for(int i1;iN;i){if(N%i0){sumi;}}cout sum;return 0;
}
3、MT1155单位矩阵
输入3X3的整型矩阵A判断是否为单位矩阵输出YES或者NO。
格式
输入格式
输入矩阵空格分隔
输出格式
输出YES或者NO
样例 1
输入
1 0 0 0 1 0 0 0 1输出
YES
相关知识点 单位矩阵来自百度百科 在矩阵的乘法中有一种矩阵起着特殊的作用如同数的乘法中的1这种矩阵被称为单位矩阵。它是个方阵从左上角到右下角的对角线称为主对角线上的元素均为1。除此以外全都为0。 在C语言中赋值操作是从右往左执行的。因此可以使用这种连续赋值的方式将多个变量赋予相同的值。例如abc0; 上述代码会先将0赋值给c然后将c的值赋值给b最后将b的值赋值给a从而使得a、b和c均为0。 二维数组 定义二维数组是一种特殊类型的数组它可以存储多行多列的元素。二维数组可以被看作是一个表格或网格其中每个元素由两个索引值表示一个用于指定行号另一个用于指定列号。 初始化二维数组的初始化可以按行分段赋值也可按行连续赋值也可以使用for语句赋值。 例如对于数组 a[3][3]。 按行分段赋值应该写作 a[3][3]{{1,2,3},{4,5,6},{7,8,9}}; 连续赋值 a[3][3]{1,2,3,4,5,6,7,8,9}; 使用for语句赋值 int a[3][3];
for(int i 0;i 3;i){for(int j 0;j 3;j){scanf(%d,a[i][j]);}
} break和continue的区别 break立即终止当前所在的循环for、while、do-while并跳出循环体继续执行循环后的代码。也可以用于终止switch语句的执行。当遇到满足某个条件时可以使用break语句来提前结束循环无需等到循环条件不满足或循环次数达到上限。 例 for (int i 1; i 10; i) {if (i 5) {break;}printf(%d , i);
} 当执行上述代码会输出1 2 3 4。在循环执行到i 5时break语句被执行循环立即终止不再执行后续的循环体语句。 continue立即跳过当前迭代中循环体内剩余的语句直接进入下一次迭代。在执行到continue语句时会停止当前迭代的执行并进行下一次迭代的判断。 例如同样使用i5这个条件 for (int i 1; i 10; i) {if (i 5) {continue;}printf(%d , i);
} 那么执行上述代码会输出1 2 3 4 6 7 8 9 10在循环执行到i 5时continue语句被执行跳过i5这个条件继续下面的循环。 跳出多重循环的一种方法goto语句但是并不建议使用这里只是作为了解 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。 注意在任何编程语言中都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。 C 中 goto 语句的语法 goto label;
..
.
label: statement; 解决思路 法一直接按照单位矩阵去判断每个元素是否都满足
法二使用矩阵的表示方法即采用二维数组表示设一个flag去判断每个变量是否满足单位矩阵的要求。首先将 flag 初始化为1假设输入的是单位矩阵。然后在遍历矩阵的过程中如果发现任何一个不符合单位矩阵定义的元素就将 flag 置为0并立即跳出循环。最后根据 flag 的值输出结果。
法三依旧采用二维数组的方法但是不设变量只要判断不符合单位矩阵的条件直接使用goto语句跳出双重循环。
实现代码
最简单粗暴的办法
#includebits/stdc.h using namespace std;int main( )
{int a1,a2,a3,a4,a5,a6,a7,a8,a9;scanf(%d %d %d %d %d %d %d %d %d,a1,a2,a3,a4,a5,a6,a7,a8,a9);if(a1 1 a2 0 a3 0 a4 0 a5 1 a6 0 a7 0 a8 0 a9 1 ){cout YES;}else cout NO;return 0;
}
使用flag判断
#include bits/stdc.h
using namespace std;int main() {int a[3][3], flag 1; // 初始化flag为1假设是单位矩阵for (int i 0; i 3; i) {for (int j 0; j 3; j) {scanf(%d, a[i][j]);}}for (int i 0; i 3; i) {for (int j 0; j 3; j) {if (i j) {if (a[i][j] ! 1) { // 对角线上的元素必须为1flag 0;break; // 发现不符合条件的元素直接跳出循环}} else {if (a[i][j] ! 0) { // 非对角线上的元素必须为0flag 0;break; // 发现不符合条件的元素直接跳出循环}}}if (flag 0) {break; // 发现不符合条件的元素直接跳出外层循环}}if (flag 1) {cout YES;} else {cout NO;}return 0;
}使用goto语句跳出双重循环方法了解
#includebits/stdc.h using namespace std;int main( )
{int a[3][3],flag0;for(int i0;i3;i){for(int j0;j3;j){scanf(%d,a[i][j]);}}for(int i0;i3;i){for(int j0;j3;j){if(ij){if(a[i][j]1){flag1;}else{flag0;goto cc;} }else{if(a[i][j]0){flag1;}else{flag0;goto cc;} }}}cc:if(flag1){cout YES;}else{cout NO;}return 0;
}4、MT1157矩阵相等
输入4X4的整型矩阵A和B判断是否为相等输出YES或者NO。
格式
输入格式
输入矩阵空格分隔。
输出格式
输出YES或者NO
样例 1
输入
4 0 0 0 5 0 0 0 6 1 2 3 4 5 6 7
4 0 0 0 5 0 0 0 6 1 2 3 4 5 6 7 输出
YES实现代码
#include iostreamusing namespace std;void cmp(int a[4][4], int b[4][4]) {int flag 1; // 将flag初始值设为1表示初始假设两个矩阵相等for (int i 0; i 4; i) {for (int j 0; j 4; j) {if (a[i][j] ! b[i][j]) {flag 0; // 有至少一个元素不相等将flag设为0break;}}if (flag 0) {break;}}if (flag 1) {cout YES endl;} else {cout NO endl;}
}int main() {int a[4][4], b[4][4];for (int i 0; i 4; i) {for (int j 0; j 4; j) {cin a[i][j];}}for (int i 0; i 4; i) {for (int j 0; j 4; j) {cin b[i][j];}}cmp(a, b);return 0;
}在写判断语句的时候没必要每次都去判断正确的情况有时候反过来思考可能更有效比如在上面的3、4题当中判断不等的情况反而更加方便一点这里再写一遍第4题就是给自己长长记性。 明天继续吧。