作者samsandy (阿母跑很快)
看板C_and_CPP
标题[问题]
时间Mon Nov 18 21:29:01 2019
开发平台(Platform): (Ex: Win10, Linux, ...)
Os
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Xcode
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
为什麽输出是0
喂入的资料(Input):
18
6
预期的正确结果(Expected Output):
18564
错误结果(Wrong Output):
c输出0
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
//
// main.cpp
// sam
//
// Created by sam on 2019/9/3.
// Copyright ? 2019 sam. All rights reserved.
//
#include<iostream>
#include <stdio.h>
using namespace std;
long int lev(int num){
long int a=1;
for(int i=1;i<=num;i++){
a=a*i;
}
return a;
}
int main(){
int n,m;
long int num=1;
cin>>n>>m;
if(m<(n/2))
m=n-m;
while(n>m){
num=num*n;
n--;
}
cout<<num<<"\n";
long int c=num/lev(m);
printf("%lu",c);
}
补充说明(Supplement):
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 110.28.229.101 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1574083743.A.DD4.html
※ 编辑: samsandy (110.28.229.101 台湾), 11/18/2019 21:29:38
1F:→ taies: int/int = int 11/18 21:41
2F:→ samsandy: 还是不太懂 是型别的问题吗 11/18 21:47
3F:→ nh60211as: 你lev(m)出来的值是多少?我刚刚跑了结果c是0没错啊 11/18 21:48
4F:→ taies: 你是想写C18取6? 算式写错了... 11/18 21:50
5F:→ samsandy: lev(m)我单独cout 结果是对的 我是要写C几取几没错 11/18 21:55
6F:→ taies: 你的num是18!/12! 但lev(m)=12! 这时应该是6!才对 11/18 21:57
7F:→ samsandy: 好的感谢解答 我再试试看 11/18 22:08
8F:推 mmmmei: 你的倒数第二行num是18*17*16*15*14*13,但是lev(m)是12 11/19 09:26
9F:→ mmmmei: ! 相除=0.0279 没有型别转换就是0了 11/19 09:26
10F:→ mmmmei: 如果你是要取c几取几我建议直接lev(n) / lev(m) 再/ lev( 11/19 09:29
11F:→ mmmmei: n-m) 这样不会改变n跟m你也比较不会不小心误触 11/19 09:29