(精)hdoj 2922概率

来源:互联网 发布:stc12c5a16s2 编程 编辑:程序博客网 时间:2024/06/06 00:48
第一次我认为n和m,让后把n依次排开,一共有n+1个位置,放入一个,m--;现在又n+2个位置,在放入一个m--;知道m==0;结果是(n+1)(n+2)...(n+m).结果当然是错误的第二次我发现如果按照上面的结果计算,那么放入的时候是有序的,所以结果应该是:(n+1)(n+2)...(n+m)/m!程序如下#include<iostream>#include<stdio.h>using namespace std;int jiecheng(int m){if(m==0)return 1;if(m==1)return 1;return m*jiecheng(m-1);}int main(){int i=0;int j=0;for(i=1;i<10;i++){for(j=1;j<10;j++){//int count=j;int start=i;int k=0;int result=1;for(k=0;k<count;k++){result*=(++start);}result=result/jiecheng(j);cout<<i<<"\t"<<j<<"\t"<<result<<endl;}}return 0;}让后我就写出了做题的程序,如果ab当中有一个为0或者一个为1.那么==;其他情况!=第三次我发现当a=0的时候只有一种情况,所以修改为如果a==0 b==0的时候也是!=第四次我发现当a==0,b==1的时候只有一种情况,而且0+1==1.但是如果说a==0b==3的时候,只有一种情况。但是a+b==3.!=所以只有ab当中一个为0,另一个为1的情况下,才==。其他情况就是ab当中有一个是1.#include<iostream>#include<stdio.h>using namespace std;int main(){//freopen("in.txt","r",stdin);int a;int b;int result=0;while(scanf("%d %d",&a,&b)){if(a==-1&&b==-1)return 0;int flag=0;if(a==0&&b==1){flag=1;}if(b==0&&a==1){flag=1;}if(a==1||b==1){flag=1;}result=a+b;if(flag==1){printf("%d+%d=%d\n",a,b,result);}else{printf("%d+%d!=%d\n",a,b,result);}}return 0;}

原创粉丝点击