题目描述
某核反应堆有两类事件发生:高能质点碰击核子时,质点被吸收,放出3个高能质点和1个低能质点;低能质点碰击核子时,质点被吸收,放出2个高能质点和1个低能质点。假定开始的时候(0微秒)只有一个高能质点射入核反应堆,每一微秒引起一个事件发生(对于一个事件,当前存在的所有质点都会撞击核子),试确定n微秒时高能质点和低能质点的数目。
输入
输入含有一些整数n(0≤n≤33),以微秒为单位,若n为-1表示处理结束。
输出
分别输出n微秒时刻高能质点和低能质点的数量,高能质点与低能质点数量之间以逗号空格分隔。每个输出占一行。
样例输入
5 2 -1样例输出
571, 209 11, 4方法一:
#include<stdio.h> int main() { int n; while (scanf("%d", &n) != EOF) { if (n == -1) { break; } int high = 1; int low = 0; int tmp; int count; int i = 0; while (i < n) { tmp = low; count = high; high = 3 * high + 2 * tmp; low += count; i++; } printf("%d, %d\n", high, low); } return 0; }
方法二:
#include<stdio.h> struct jj { int n; int sum; int sb; }stu[100]; int main() { int i; for (i = 0;; i++) { scanf("%d", &stu[i].n); if (stu[i].n == -1) { break; } int j=0; int high = 1; int low = 0; int tmp; int count; while (j < stu[i].n) { tmp = low; count = high; high = 3 * high + 2 * tmp; low += count; j++; } stu[i].sum = high; stu[i].sb = low; } for (i = 0; stu[i].n!=-1; i++) { printf("%d, %d\n", stu[i].sum,stu[i].sb); } return 0; }
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交