| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3220 人关注过本帖
标题:这个题自己运行成功,OJ上显示运行错误,为什么?(运行期间执行了什么非法操 ...
取消只看楼主 加入收藏
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
结帖率:92%
收藏
已结贴  问题点数:20 回复次数:7 
这个题自己运行成功,OJ上显示运行错误,为什么?(运行期间执行了什么非法操作?)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(void){
  int n,s[7]={0},i=0,k=0;
  scanf("%d",&n);
  while(n!=0){
  s[i++]=n%10;
  n=n/10;
}
  for(i=i-1;i+1;i--){
      if(s[i]!=0)
      k=k+pow(2,(double)(i));
  }
  printf("%d\n",k%(1000000000+7));
  return 0;
}
  
搜索更多相关主题的帖子: 运行 错误 非法 操作 include 
2018-05-09 14:31
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

忘了附题。。
2018-05-09 14:32
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
收藏
得分:0 
回复 3楼 nosnoy
如果一个高位不为0,把它置零以后,剩下位数就可以是0或1,共有2^(剩下位数的个数)种情况,都是满足条件的;如果这个高位为0,就跳过去。这个算完以后,把那个高位置1,次高位当成原来的高位,同样算法循环。
2018-05-09 15:09
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
收藏
得分:0 
萌新一枚,可能想得不对
2018-05-09 15:14
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
收藏
得分:0 
回复 4楼 nosnoy
不是所有数位都可以取0或1,这样的数可能会超过n的值啊
2018-05-09 15:25
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
收藏
得分:0 
回复 8楼 nosnoy
假设输入的n值为 111
n   i
111 0
11   1
1    2
0    2
最后输出a的值为2^2+1=5,
但是满足条件的数有: 1,10,11,100,101,110,111,一共7个。
2018-05-09 15:44
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
收藏
得分:0 
回复 11楼 九转星河
谢谢大佬,pow就是用来求幂的,后面溢出那里我水平不够没看懂,你是说取模那里不能直接用%1000000007来算么?

[此贴子已经被作者于2018-5-9 16:38编辑过]

2018-05-09 16:29
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
收藏
得分:0 
回复 12楼 Pine_
我在5楼解释了一下,我觉得方法应该是对的,因为数据输出是对的,只是不知道为什么过不了OJ。
2018-05-09 16:40
快速回复:这个题自己运行成功,OJ上显示运行错误,为什么?(运行期间执行了什么 ...
数据加载中...
 
   



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

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