测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A40983. 检查金币

填空题 较易

题目描述

检查金币

题目描述

ACM公司生产金币的设备出了问题,使得最近生产的10批金币的重量出现了波动:本来金币的标准重量是10克,但现在有的可能是11克,有的可能9克,也有可能是10克。 

现在只知道同一批金币的重量是相同的,你的任务是要把每批的单枚金币的重量找出来。 

你的设备有一个电子秤,但只允许称量一次! 

你从第1批中取1枚金币,第2批取3枚,...第i批取3^(i−1)枚...,第10批取3^9枚,总共29524枚。将这29524枚金币放在电子秤上,得到了总重量,就交给你的程序去!

输入格式

有多个测试序列,每个测试序列一行,包含一个6位的正整数W(265716≤W≤324764),表示29524枚金币的总重量

输出格式

每个测试序列输出一行,包含10个用空格分开的正整数,分别表示10批金币的单枚重量,注意行尾没有空格。

样例输入

265716

324764

295240

样例输出

9 9 9 9 9 9 9 9 9 9

11 11 11 11 11 11 11 11 11 11

10 10 10 10 10 10 10 10 10 10

参考答案

#include <stdio.h> #include <math.h> #define B 265716 int main() { int weight,value,golden[10],o,gold_num; while (scanf("%d",&weight)!=EOF) { for (o=0;o<10;o++) golden[o]=9; value=weight-B; for (o=9;o>=0;o--) { if (value==0) break; gold_num=pow((double)3,o); if (gold_num*2<=value) { golden[o]+=2; value-=gold_num*2; } else if (gold_num<=value) { golden[o]++; value-=gold_num; } } for (o=0;o<10;o++) { printf("%d",golden[o]); if (o!=9) printf(" "); } printf("\n"); } return 0; }
上一题 下一题