用数学方法我会做,编程有点问题!!
规定要用while循环做啊!
还有要加载一个函数乘方的!
43 个解决方案
#1
我晕死,不就是求一个级数码?你没学过高等数学?
#2
这个很难吗?
你自己都说出来了……
你自己都说出来了……
#3
不会就不要发言!!!!!
我晕!!!
呵呵!!!
没有学过高等数学!
只学过高中数学!!
我晕!!!
呵呵!!!
没有学过高等数学!
只学过高中数学!!
#4
好难好难啊!!
我都快悲剧死了!
呵呵!!!!
送分的类!!
我都快悲剧死了!
呵呵!!!!
送分的类!!
#5
怎么还没有人给我答案啊!!
急!!!!
急!!!!
#6
#include <stdio.h>
#include <math.h>
int main()
{
int n=2;
int sum=1;
while(sum<1000)
{
sum+=pow(2,n);
n++;
}
n--;
printf("满足条件的最大n值为: %d\n",n);
system("pause");
return 0;
}
#7
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int fun(int);
int i=2,num=1;
while(i<10){
num += fun(i);
if(num>1000){
num -= fun(i);
break;
}
i++;
}
cout<<i;
return 0;
}
int fun(int x){
return pow(2.0,x);
}
写的不好,刚好符合你的要求……
#8
楼上各位写的代码说实话,本人看不上
#9
呵呵你还上递归。。。不是坑人。
#10
建议楼主用位操作,省了调用库函数的时间浪费....
#11
看你的。
#12
提示::用等比数列推算,发现规则,然后用位操作实现....
#13
如果“编程有点问题”,就把你已经完成的代码贴出来,告诉大家你遇到的是什么问题,让别人帮助你解决。上来就要代码是不好的习惯,让人觉得你自己没有做任何思考。
#14
---------------------
答案也给了,建议也给了,我就只能+1了
#15
我试试。。。
#16
听君一席话,胜读十年书啊。
另外两个的代码当程序跑到 2^31的时候 你看结果是多少。呵呵。
要完成这个程序还要自己写个 大数据 来存放数据。
还不会写 大数据 那位大哥写个我学习学习。
位运算的方法。
#include <stdio.h>
#include <stdlib.h>
#define N 100
int main(int argc,char **argv)
{
int i = 1,sum = 1,n = 2,k = 1;
printf("%d^%d = %d %d\n",sum,sum,sum,k);
while (n < N)
{
k += sum = i << n;
printf("%d^%d = %d %d\n",i+1,n++,sum,k);
}
return 0;
}
#17
俺把题目给看错了。看成是n<1000了。。。。
#18
好方法
#19
不过,人家的和<1000,不是n<1000
哈哈
哈哈
#20
借花献佛~哈哈
#include <stdio.h>
#include <stdlib.h>
#define N 1000
int main(int argc,char **argv)
{
int i = 1,sum = 1,n = 2,k = 1;
printf("%d^%d = %d %d\n",sum,sum,sum,k);
while (k < N)
{
k += sum = i << n;
printf("%d^%d = %d %d\n",i+1,n++,sum,k);
}
printf("the number is ::::%d\n",n-1);
return 0;
}
#21
位移运算最好 那个就是 2^(n+1) - 1 直接左移n+1位 -1 就好了
#22
...
就是2进制每次高位变1
就是2进制每次高位变1
#23
1^1+2^2+2^3+…+2^n<1000
还是
2^1+2^2+2^3+…+2^n<1000
还是
2^1+2^2+2^3+…+2^n<1000
#24
如用等比数列何不干脆用求和工式,1^1+2^2+2^3+…+2^n=1+2^(n+1)-2^2=2^(n+1)-3。
#25
哈~这让我想起了一句话~~“程序员能做的事,尽量不要让计算机做”~
up用公式~
#26
应该是2^1+2^2+2^3+…+2^n<1000吧
//...
int n = 1,sum = 0;
while(sum<1000)
{
sum += (int)pow(2,n++);
}
n--;
sum -= pow(2,n);
//...
#27
int x=0,n=2;
while(x>=1000-1))
{
x+=(1<<n);
n++;
}
加while循环只能这样了吧,不过用位运算+数学方法是最好的
#28
程序员能做,那就口算,n=9对不对?
2^2+2^3+…+2^n用二进制加,一位对一位没有一个有进位,每位都是 1 。1023等于1111111111 (10个1),大于1000,在前面减个1,就是111111111,n=9.看到前面是1^1+2^2+……没有2^1,所以最后的和为111111101(二进制)。
#29
学习了,没有想到位运算……
#30
可以看成是二进制转十进制的问题呀
#31
#include <stdio.h>
int sum;
void q(int i)
{
if (sum > 1000)
{
printf("%d\n", i - 1);
return ;
}
++i;
sum += i * i;
q(i);
}
int main()
{
q(0);
}
#32
上面严重看错题目了
#include <stdio.h>
#include <math.h>
int main()
{
int sum = 1, i = 2;
while (sum < 1000)
{
sum += pow(2, i++);
}
printf("%d\n", i);
}
#33
printf("%d\n", i - 1);
#34
学习了,原来位运算还有如此应用
#35
#define N 1000
void main()
{
int i,n=1;
for(i=0;n<N+2;i++)
{
n=(n<<1|1);
}
printf("%d",--i);
}
void main()
{
int i,n=1;
for(i=0;n<N+2;i++)
{
n=(n<<1|1);
}
printf("%d",--i);
}
#36
#define N 1000
void main()
{
int i,n=1;
for(i=0;n<N+2;i++)
n=(n<<1|1);
printf("%d",--i);
}
够简短了吧?
void main()
{
int i,n=1;
for(i=0;n<N+2;i++)
n=(n<<1|1);
printf("%d",--i);
}
够简短了吧?
#37
LS你自己试过结果没有
#38
试过,结果是8。
你也可以改N的值试试。
#39
#include <stdio.h>
#include <math.h>
void main()
{
int n = 1,sum = 0;
while(sum<1000)
{
sum+=(int)pow(2,n++);
}
printf("满足条件的最大n值为: %d\n",--n);
}
#40
int main(){
int sum=0;
int start=2;
int count=1;
while(sum+1<1000){
start=start<<1;
sum+=sum+start;
count++;
}
printf("count:%d\n",count);
return 0;
}
#41
int main(){
int sum=0;
int start=2;
int count=0;
while(sum+1<1000){
start=start<<1;
sum=sum+start;
count++;
}
printf("count:%d\n",count);
return 0;
}
#42
n=9
#43
对哦……底数是2哦……如果换别的呢?
#1
我晕死,不就是求一个级数码?你没学过高等数学?
#2
这个很难吗?
你自己都说出来了……
你自己都说出来了……
#3
不会就不要发言!!!!!
我晕!!!
呵呵!!!
没有学过高等数学!
只学过高中数学!!
我晕!!!
呵呵!!!
没有学过高等数学!
只学过高中数学!!
#4
好难好难啊!!
我都快悲剧死了!
呵呵!!!!
送分的类!!
我都快悲剧死了!
呵呵!!!!
送分的类!!
#5
怎么还没有人给我答案啊!!
急!!!!
急!!!!
#6
#include <stdio.h>
#include <math.h>
int main()
{
int n=2;
int sum=1;
while(sum<1000)
{
sum+=pow(2,n);
n++;
}
n--;
printf("满足条件的最大n值为: %d\n",n);
system("pause");
return 0;
}
#7
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int fun(int);
int i=2,num=1;
while(i<10){
num += fun(i);
if(num>1000){
num -= fun(i);
break;
}
i++;
}
cout<<i;
return 0;
}
int fun(int x){
return pow(2.0,x);
}
写的不好,刚好符合你的要求……
#8
楼上各位写的代码说实话,本人看不上
#9
呵呵你还上递归。。。不是坑人。
#10
建议楼主用位操作,省了调用库函数的时间浪费....
#11
看你的。
#12
提示::用等比数列推算,发现规则,然后用位操作实现....
#13
如果“编程有点问题”,就把你已经完成的代码贴出来,告诉大家你遇到的是什么问题,让别人帮助你解决。上来就要代码是不好的习惯,让人觉得你自己没有做任何思考。
#14
---------------------
答案也给了,建议也给了,我就只能+1了
#15
我试试。。。
#16
听君一席话,胜读十年书啊。
另外两个的代码当程序跑到 2^31的时候 你看结果是多少。呵呵。
要完成这个程序还要自己写个 大数据 来存放数据。
还不会写 大数据 那位大哥写个我学习学习。
位运算的方法。
#include <stdio.h>
#include <stdlib.h>
#define N 100
int main(int argc,char **argv)
{
int i = 1,sum = 1,n = 2,k = 1;
printf("%d^%d = %d %d\n",sum,sum,sum,k);
while (n < N)
{
k += sum = i << n;
printf("%d^%d = %d %d\n",i+1,n++,sum,k);
}
return 0;
}
#17
俺把题目给看错了。看成是n<1000了。。。。
#18
好方法
#19
不过,人家的和<1000,不是n<1000
哈哈
哈哈
#20
借花献佛~哈哈
#include <stdio.h>
#include <stdlib.h>
#define N 1000
int main(int argc,char **argv)
{
int i = 1,sum = 1,n = 2,k = 1;
printf("%d^%d = %d %d\n",sum,sum,sum,k);
while (k < N)
{
k += sum = i << n;
printf("%d^%d = %d %d\n",i+1,n++,sum,k);
}
printf("the number is ::::%d\n",n-1);
return 0;
}
#21
位移运算最好 那个就是 2^(n+1) - 1 直接左移n+1位 -1 就好了
#22
...
就是2进制每次高位变1
就是2进制每次高位变1
#23
1^1+2^2+2^3+…+2^n<1000
还是
2^1+2^2+2^3+…+2^n<1000
还是
2^1+2^2+2^3+…+2^n<1000
#24
如用等比数列何不干脆用求和工式,1^1+2^2+2^3+…+2^n=1+2^(n+1)-2^2=2^(n+1)-3。
#25
哈~这让我想起了一句话~~“程序员能做的事,尽量不要让计算机做”~
up用公式~
#26
应该是2^1+2^2+2^3+…+2^n<1000吧
//...
int n = 1,sum = 0;
while(sum<1000)
{
sum += (int)pow(2,n++);
}
n--;
sum -= pow(2,n);
//...
#27
int x=0,n=2;
while(x>=1000-1))
{
x+=(1<<n);
n++;
}
加while循环只能这样了吧,不过用位运算+数学方法是最好的
#28
程序员能做,那就口算,n=9对不对?
2^2+2^3+…+2^n用二进制加,一位对一位没有一个有进位,每位都是 1 。1023等于1111111111 (10个1),大于1000,在前面减个1,就是111111111,n=9.看到前面是1^1+2^2+……没有2^1,所以最后的和为111111101(二进制)。
#29
学习了,没有想到位运算……
#30
可以看成是二进制转十进制的问题呀
#31
#include <stdio.h>
int sum;
void q(int i)
{
if (sum > 1000)
{
printf("%d\n", i - 1);
return ;
}
++i;
sum += i * i;
q(i);
}
int main()
{
q(0);
}
#32
上面严重看错题目了
#include <stdio.h>
#include <math.h>
int main()
{
int sum = 1, i = 2;
while (sum < 1000)
{
sum += pow(2, i++);
}
printf("%d\n", i);
}
#33
printf("%d\n", i - 1);
#34
学习了,原来位运算还有如此应用
#35
#define N 1000
void main()
{
int i,n=1;
for(i=0;n<N+2;i++)
{
n=(n<<1|1);
}
printf("%d",--i);
}
void main()
{
int i,n=1;
for(i=0;n<N+2;i++)
{
n=(n<<1|1);
}
printf("%d",--i);
}
#36
#define N 1000
void main()
{
int i,n=1;
for(i=0;n<N+2;i++)
n=(n<<1|1);
printf("%d",--i);
}
够简短了吧?
void main()
{
int i,n=1;
for(i=0;n<N+2;i++)
n=(n<<1|1);
printf("%d",--i);
}
够简短了吧?
#37
LS你自己试过结果没有
#38
试过,结果是8。
你也可以改N的值试试。
#39
#include <stdio.h>
#include <math.h>
void main()
{
int n = 1,sum = 0;
while(sum<1000)
{
sum+=(int)pow(2,n++);
}
printf("满足条件的最大n值为: %d\n",--n);
}
#40
int main(){
int sum=0;
int start=2;
int count=1;
while(sum+1<1000){
start=start<<1;
sum+=sum+start;
count++;
}
printf("count:%d\n",count);
return 0;
}
#41
int main(){
int sum=0;
int start=2;
int count=0;
while(sum+1<1000){
start=start<<1;
sum=sum+start;
count++;
}
printf("count:%d\n",count);
return 0;
}
#42
n=9
#43
对哦……底数是2哦……如果换别的呢?