#include <stdioh>
unsigned long func(unsigned long a,unsigned long b)
{
unsigned long sum;
for(sum=0;a<=b;++a)
sum+=a;
return sum;
}
int main()
{
printf("%lu\n",func(1,50));
printf("%lu\n",func(50,100));
return 0;
}
还有OS,两两之间的和就用两个相邻的数,x和x+1
解出来貌似是个4102取值范围
有几个重复的数字就除以几的阶乘
比如求1、2、2组成的不同3位数的个数 =3!/2! =(1×zhi2×3)/(1×2) =3
再比如求1、1、1、2、3组成的不同5位数的个数 =5!/3! =(1×2×3×4×5)/(1×2×3) =4×5 =20
如果只是有2个数字重复,就直接在排列数的基础上除以。
扩展资料:
组合的定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。
其他排列与组合公式 从n个元素中取出m个元素的循环排列数=A(n,m)/m=n!/m(n-m)! n个元素被分成k类,每类的个数分别是n1,n2,nk这n个元素的全排列数为 n!/(n1!×n2!××nk!) k类元素,每类的个数无限,从中取出m个元素的组合数为C(m+k-1,m)。
参考资料来源:百度百科-排列组合
分类: 电脑/网络 >> 程序设计 >> 其他编程语言问题描述:
环境:VC++60;win2000;
#include <stdioh>
void main()
{
int num1,num2,a,sum;
scanf("%d",&num1);
scanf("%d",&num2);
if(num1>num2&&num1%2!=0)
{
for(a=num1;a>=num2;a-=2)
printf("%d \n",a);
}
if(num1>num2&&num1%2==0)
{
for(a=num1-1;a>=num2;a-=2)
printf("%d \n",a);
}
if(num2>num1&&num2%2==0)
{
for(a=num2-1;a>=num1;a-=2)
printf("%d \n",a);
}
if(num2>num1&&num2%2!=0)
{
for(a=num2;a>=num1;a-=2)
printf("%d \n",a);
}
}
这里只能排出任意两个数之间奇数的序列,但是求和怎么求,我就不懂了,请高手指教一二,不胜感谢!!!
解析:
#include<stdioh>
main()
{
int a,b,c;
c=0;
printf("输入两个数字求出它们之间奇数的和请输入第一个: ");
scanf("%d",&a);
printf("输入第二个:");
scanf("%d",&b);
if(a<b)
{
if(a%2==0)a++;
for(;a<=b;a+=2)
c=c+a;
}
else
{
if(b%2==0)b++;
for(;b<=a;b+=2)
c=c+b;
}
printf("奇数和为:%d",c);
}
请指教,谢谢!
--------------------------------------------------------------------------------
#include <stdioh>
#include <stdlibh>
int main(int argc, char argv[])
{
int a, b, c;
scanf("%d%d", &a, &b);
if(a>b) {a^=b; b^=a; a^=b;}
if(a%2!=1) ++a;
if(b%2!=1) --b;
if(a>b)
c=0;
else
c=(a+b)(((b-a)>>1) + 1)>>1;
printf("%d", c);
system("PAUSE");
return 0;
}
--------------------------------------------------------------------------------
既然都用>>做除法了,干嘛不用&做取余数 if(a&1!=1)好了
--------------------------------------------------------------------------------
你这个办法有点浪费时间。
#include "stdioh"
init_ab(int a,int b)
{
int p;
if(a>b)
{
p=a;
a=b;
b=p;
}
a=(a%2==0)(a+1):a;
b=(b%2==0)(b-1):b;
}
int cal(int a,int b)
{
int n=0;
n=(b-a)/2+1;
return(na+n(n-1)); /µÈ²îÊýÁÐÇóºÍ¹«Ê½/
}
main()
{
int a=2,b=10;
init_ab(&a,&b);
printf("%d",cal(a,b));
getch();
}
一年级数学两个数之间有多少个数用减法计算。算法:大数-小数-1。
举例说明如下:10到17之间有6个数。
(1)列举法:把10到17的自然数写出来,从10到17的自然数有:10,11,12,13,14,15,16,17。再一个个数,得10到17之间有:11,12,13,14,15,16。共6个数字。
(2)算式法:17-10-1=7-1=6。减去1的原因是减掉17本身。
扩展资料:
整数加减法的运算:
1、相同数位对齐;
2、从个位算起;
3、加法中满几十就向高一位进几;减法中不够减时,就从高一位退1当10和本数位相加后再减。
减法的性质
1、一个数连续减去几个数,等于从这个数中减去这几个数的和。
a-b-c-d=a-(b+c+d)
2、一个数减去几个数的和,等于从这个数中连续减去这几个数。
a-(b+c+d)=a-b-c-d
3、加、减混合运算去括号的性质,注意去括号时加减符号的变化。
a+(b-c)=a+b-c;a-(b+c)=a-b-c;a-(b-c)=a-b+c
第一题,程序代码如下,供参考:#include <stdioh>
void main(void){
int H_sum(int,int);
int x,y,num;
printf("请输整数x:"); //负数亦可,但要保证输入整数
scanf("%d",&x);
printf("请输整数y:");
scanf("%d",&y);
if(x>y){
num=x;
x=y;
y=num;
}
printf("\n\n两数之间的所有数之和为:%d\n\n",H_sum(x,y));
}
int H_sum(int x,int y){
int sum=0;
for(int i=x+1;i<y;i++)
sum+=i;
return sum;
}
第二题,程序代码如下,供参考:
#include "stdioh"
#include "stringh"
void main(){
char mima[]={"1234567"};
char s[7];//设定密码为输入字符的前七位
printf("请输入密码:");
for(int i=0;i<3;i++){
scanf("%s",s);
if(strcmp(mima,s)==0){
printf("\nWelcome\n\n");
break;
}
else{
printf("\nSorry\n\n");
if(i<2)
printf("请再一次输入密码:");
}
}
if(i==3)
printf("输入次数已达3次,不允许再输入!\n\n");
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)