A:火星A+B
先写一个小程序得到从2开始的 25个素数放到一个数组里面备用j[25]={2,3,5.....}
输入:我的方法 是 用
i=0;
while(1)
{
scanf("%d%c",&s[i++],&c);
if(c!=',') break;
}
a=i;//长度
然后用 一个for循环倒着赋值到一个数组a1里面
for(i=0;i<a;i++)
a1[i]=s[a-1-i];
同样的方法得到 b1
因为是倒着赋值的 所以a1[0]就是个位
然后就是用一个for循环求出 sum[]的每一位 类似于大数求和的方法
for(i=0,jin=0;i<max(a,b);i++){....}
倒着输出就好了
B:奇数阶魔方(II) 不会做 感觉有点规律 但是理不清楚
C:LC-Display 有点 复杂 没时间做了(借口) 空格的问题要处理好 其实不是很会。
D:Running 考虑到加速度为0 就能A了
E:a^b
个位数的和的个位数的和。。。。。。4次
10000的10000次 是10的40000次 一次后算足是36万 6位数 算足是54 再一次一般就是 个位数了 然后第四次后一定是个位数了
然后 就算了2的0 1 2 3 4 5 6 7 ,发现到后面是循环的换算成个位数后 就想到 其它小于10的数也是有规律的
接下来就是 a>9怎么办 然后算了 11的 0 1 2 3 4 5 6 发现结尾和2 是一样的 弱弱的又算了几组 都有这个规律
把a换算成 个位数后的 b次的个位和 和原来的a的b次和 是一样的
然后就是把 a换算成个位数 分 0 1 2 3 4 5 6 7 8 9 这样10种情况 分别找出规律 然后 就 ok了
F:Eeny Meeny Moo类似于约瑟夫问题,不过是告诉你 总的城市的个数n 并且先断1的网 最后断的是 2 要求最小的m
我没水平,果断m从2开始试上去 等到 最后留下也就是最后断的是 2 跳出循环 提交 结果超时了
没办法了 n取值范围是 3到150 在 上面加了个freopen("d:/data.txt","w",stdout); 输入改成for(n=3;n<=150;n++)
输出的换行 改成 逗号 然后运行 等一下下 就有 请按任意键继续。。。 关掉 然后在d盘下找到了data的文件 里面就是 没一个n的结果 放到一个数组里面 对每个n直接取出来就是了,方法烂爆了。据说求最后留下的又一个公式的,用了然后不会超时。
G:Light Bulb我觉得是数学问题,weiben说二分查找,没懂weiben大神的意思(我太水)。
设墙上的高度为a,总长为l;利用相似三角形得到 (H-a)/D=(h-a)/(l-a)
可以化出 l=D(h-a)/(H-a)+a
通分得到 l=(-a*a+(H-D)a+Dh)/(H-a)
就是求l的最大值
最大值 也就是 l的导数等于0的时候的 a能使l取得最大值(无限感谢 zxl 童鞋这里的提示)
2边求导 可以得到 0=(a*a-2Ha+H*H+Dh-DH)/((H-a)*(H-a)) 因为左边是0,分母约掉
得到 a*a-2Ha+H*H+Dh-DH=0 这样用求根公式得到a=H-sqrt(DH-Dh),因为a必定小于H,所以舍弃 H+sqrt(DH-Dh),
然后 判断 如果 a>=h 就直接输出h 如果a<=0 就是墙上的长度为0 输出 D*h/H 其他情况代入l的公式求解
zxl童鞋用 (H-a)/D=(h-a)/b (b是地面上的长度) 然后根据 (a+b)的导数为0 用微分方程求解 a (我高数没学好,不会。)