| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3200 人关注过本帖
标题:这个题自己运行成功,OJ上显示运行错误,为什么?(运行期间执行了什么非法操 ...
只看楼主 加入收藏
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
结帖率:92%
收藏
已结贴  问题点数:20 回复次数:19 
这个题自己运行成功,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
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:5 
回复 2楼 青蝶
为啥要进行k的替增 2^0+2^1+……+2^n=2^(n+1)-1;

穷举是最暴力的美学
2018-05-09 14:59
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
#include <stdio.h>
#include <math.h>
void main()
{
    int n,i=0,flg,a;
    scanf("%d",&n);
    if(n%10==0)
        flg=1;
    else
        flg=0;
    while(n/=10,n!=0)
    {
        i++;
    }
    a=pow(2,i);
    if(flg)
    printf("%d",a);
    else
    printf("%d",a+1);
}

穷举是最暴力的美学
2018-05-09 15:09
青蝶
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
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
回复 7楼 青蝶
假设输入的n值为 1005
n   i
1005 0
100   1
10    2
1      3
0        3
假设n为 1010
n    i
1010  0
101    1
10      2
1        3
0        3

穷举是最暴力的美学
2018-05-09 15:32
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:541
专家分:1178
注 册:2016-9-17
收藏
得分:0 
回复 7楼 青蝶
刚没想到 1010的情况
现修改如下
#include <stdio.h>
#include <math.h>
void main()
{
    int n,i=0,flg=0,a;
    scanf("%d",&n);
    while(n/=10,n!=0)
    {
        i++;
    if(n%10!=0)
        flg=1;
    }
    a=pow(2,i);
    if(flg)
    printf("%d",a+1);
    else
    printf("%d",a);
}

穷举是最暴力的美学
2018-05-09 15:40
青蝶
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
快速回复:这个题自己运行成功,OJ上显示运行错误,为什么?(运行期间执行了什么 ...
数据加载中...
 
   



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

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