C语言程序设计—北京理工大学MOOC提交作业(1) 下载本文

测试用例 1 测试输入 期待的输出 时间限制 内存限制64M 额外进程0 以文本方式显示 1. 3? 以文本方式显示 1秒 1. 2. 1? 2? 测试用例 2 以文本方式显示 1秒 1. 2. 3. 4. 5. 6. 1? 2? 3? 11? 22? ? 64M 0 以文本方式显示 1. 25? Code: #include int main() {

int n, m, square, i, temp, log; char s[6];

scanf(\

for(m = 1; m < n; m++) { i = 0; square = m * m; log = 1; while(square != 0) { temp = square % 10; s[i] = '0' + temp; i++; square /= 10; } for(temp = 0; temp < i / 2; temp++) { if(s[temp] != s[i - 1 - temp]) log = 0; } if(log) printf(\ } return 0;

}

3.洗牌

成绩 折扣 10 开启时间 2014年11月20日 星期四 03:00 0.8 折扣时间 2014年12月31日 星期三 23:55 关闭时间 2014年12月31日 星期三 23:55 允许迟交 否 假设我们有 2n 张牌,它们以 1, 2, ..., n, n+1, ..., 2n 编号并在开始时保持着这种顺序。一次洗牌就是将牌原来的次序变为 n+1, 1, n+2, 2, ..., 2n, n,也就是将原来的前 n 张牌放到位置 2, 4, ..., 2n,并且将余下的 n 张牌按照他们原来的次序放到奇数位置 1, 3, ..., 2n-1。已经证明对于任何一个自然数 n,这 2n 张牌经过一定次数的洗牌就回到原来的次序。但我们不知道对于一个特定的 n,需要几次洗牌才能将牌洗回原来的次序。

输入:

牌张数的一半n,即初始情况下一共有2n张牌,n为int型整数 输出:

将牌洗回原来的次序所需要的洗牌次数

测试输入 期待的输出 时间限制 内存限制64M 额外进程0 测试用例 1 以文本方式显示 以文本方式显示 1秒 1. 10? 1. 6? 测试用例 2 以文本方式显示 以文本方式显示 1秒 1. 20? 1. 20? 64M 0 Code:

#include int main() {

int a[10000],tmp1[5000],tmp2[5000], i, m, n = 0, log = 0, total = 0; scanf(\ //

for(m = 0; m < 2* i; m++) a[m] = m; do{ for(m = 0; m < i; m++) {

tmp1[m] = a[m]; tmp2[m] = a[m + i]; } n = 0; for(m = 0; m < i; m++) { a[n] = tmp2[m]; n++; a[n] = tmp1[m]; n++; } log = 0; for(m = 0; m < 2 * i; m++) { if(a[m] != m) { log = 0; break; } if(a[m] == m) { log = 1; } } total++; }while(log != 1); printf(\ return 0; }