wuwuwu不会,救我

7.  浮点数精度
题目ID:20484必做题100分
时间限制: 1000ms
空间限制: 262144kB
题目描述
楠枫学习编程的过程中遇到了一个大麻烦,他发现作为人类智慧的结晶——计算机,竟然无法正确的计算加法,他觉得很不可思议!比如 
0.1
+
0.2
=
0.3
0.1+0.2=0.3 是正确的,可是当他编程时程序的判断却是错误的。他的代码大致如下:
后来老师告诉他,这是因为计算机用二进制存储数据,有可能无法精确地表示某些十进制小数,所以两者判等时出错。既然知道了原因,楠枫打算找一找这种在计算上本该相等,却在程序判等时不一致的数。他的寻找方法如下:

对于含有 
�
m 位小数的数字 
�
d (数字 
�
d 除最后一位数位不为 0 外,其余都为 0,如含有 6 位的小数 0.000003),按如下步骤操作:

通过 
�
×
1
0
�
d×10 
m
  获得的数字 
�
d 非零位上的数字 
�
s;
把 
�
s 扩大 
�
k 倍后再除以 
1
0
�
10 
m
 ,以获得与 
�
d 的 
�
k 倍对应的浮点数 
�
  
(
�
=
�
�
1
0
�
)
v(v= 
10 
m
 
sk
​
 );
通过程序将 
�
k 个 
�
d 加起来的和与 
�
v 直接进行判等。
其中,
�
k 是一个正整数,为了获得更多数据,楠枫会把 
�
k 从 1 枚举到 
�
  
(
1
≤
�
≤
�
)
n(1≤k≤n),也就是他会按上述步骤判等 
�
n 次,依次检查 
�
d 的 1 倍、 2 倍、 3 倍…… 
�
n 倍。如果发现判等结果不成立,将会按要求打印一个不等式,格式为:

�
+
�
+
⋯
+
�
⏟
�
个 d
!
=
�
k个 d
d+d+⋯+d
​
 
​
 !=v
输入格式
第一行两个整数,表示最大的倍数 
�
n 和小数位数 
�
m;第二行一个小数,代表要检查的小数 
�
d。

输出格式
如果有判等结果不成立,就输出一行不等式(
�
、
�
d、v 要保留 
�
m 位小数);如果所有的判等结果都成立,输出内容为空。

样例
Input 1
10 1
0.1
Output 1
0.1 + 0.1 + 0.1 != 0.3
0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 != 0.8
0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 != 0.9
0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 != 1.0
样例解释
对于例子,n=10,m=1,d=0.1,当k分别等于3,8,9,10时,判等结果不成立,因此会输出4行不等式。

数据范围
5
≤
�
≤
20
5≤n≤20 且 
1
≤
�
≤
10
1≤m≤10
1.  日期
题目ID:9534必做题100分
最新提交:
Wrong Answer
0 分
历史最高:
Wrong Answer
0 分
时间限制: 1000ms
空间限制: 524288kB
题目描述
公历日期标准格式为:2007年2月6日;或:2007-02-06。现在请你读入一个日期,将年份增加20后再按正确格式输出,如:2027-02-06。

注意如果月和日为一位数,输出要在前面补零变成两位数。年份一定是四位数。

输入格式
三个整数,用-隔开,分别表示为年月日。

输出格式
见样例输出

样例
Input 1
1945-9-2
Output 1
1965-0
1 个赞

你要么看看你在发什么

1 个赞

我知道啊

1 个赞

日期过了

1 个赞

这么水不会? :slight_smile:
还有,你这个 \LaTeX 不是一般的炸裂

1 个赞

会用 printf 嘛?知道怎么保留小数吧,就能过了。公式的话用 pow 函数,这样就可以了:

d * pow(10, m) * i / pow(10, m)

AC了给解决方案

1 个赞

和老师讲的一样,AC了,谢谢

1 个赞