| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1137 人关注过本帖
标题:这个程序我没看懂啥意思,为什么要这么做
只看楼主 加入收藏
黑暗骑士5D
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2019-11-6
结帖率:100%
收藏
已结贴  问题点数:9 回复次数:3 
这个程序我没看懂啥意思,为什么要这么做
我们都知道1 + 2 + 3 ... + n = n(n +1)/ 2。 现在,您的任务只是找到n(n + 1)/ 2,结果保证小于2 ^ 64。

输入规格:
输入带有十六进制整数的n

输出规格:
显示为十进制整数

输入样例:
4
样本输出:
10


int main()
{
    unsigned long long a,b;
    scanf("%llx",&a);
    b=a/2*2;
    if(b!=a)
      printf("%llu %llu",(a+1)/2*a,b);
    else
      printf("%llu %llu",a/2*(a+1),b);
    return 0;
}
搜索更多相关主题的帖子: 整数 long 输出 输入 规格 
2019-11-17 21:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
看不懂,什么叫“您的任务只是找到n(n + 1)/ 2”?
什么叫“输入带有十六进制整数的n”?是 输入十六进制格式的整数n 吗


这个程序我没看懂啥意思,为什么要这么做
哪里看不懂,要说出来呀
n*(n+1)/2 时,n*(n+1) 可能溢出
n/2*(n+1) 时,n 可能是奇数,导致结果不正确
(n+1)/2*n 时,n 可能是偶数,导致结果不正确
所以正确做法是 n%2==0 ? n/2*(n+1) : (n+1)/2*n
2019-11-18 09:06
黑暗骑士5D
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2019-11-6
收藏
得分:0 
回复 2楼 rjsp
这个a是以十六进制输入的吗?输入进去之后是十六进制还是十进制的数?为什么要a/2*2
2019-11-19 12:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:9 
这个a是以十六进制输入的吗?
我不知道,你贴的题目“输入带有十六进制整数的n”我又看不懂。
但看你给的代码,应该是“输入十六进制格式的整数”

输入进去之后是十六进制还是十进制的数?
数是没进制的,只有数的表达才有。假如你家有 爸爸、妈妈、你、老婆、孩子,可以说你家有五人、有five人,有5人,有0x5人,有101b人,但不能说你家人数是 中文、英文、十进制、十六进制、二进制。
同样,假如 scanf("%llx",&a); 你输入了 10,那么 a 中的值就是 0x10 表示的那个数、就是 16 表示的那个数,就是 sixteen 表示的那个数,但a的值与 十进制、十六进制、英文 无关。

为什么要a/2*2
我在二楼已经讲过了,要区分a的奇偶,分别用不同的公式。
你的代码用 a/2*2 != a 来判断它是不是奇数,当然正常人会用 a%2 != 0
2019-11-19 13:14
快速回复:这个程序我没看懂啥意思,为什么要这么做
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036462 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved