| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 957 人关注过本帖
标题:为什么总是RE···求助···
只看楼主 加入收藏
w7121544
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-11-21
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:9 
为什么总是RE···求助···
http://acm.xidian.

#include<stdio.h>
#include<string.h>
long s;
int n;
void mod(int a[],int k,int len)
{
long i,y,yu;
if(len!=0)
{
 for(i=k;i<=n-2;++i)
 {
 yu=a[i]-a[i]/2*2;
 a[i]=a[i]/2;
 a[i+1]=yu*10+a[i+1];
 }
 s=s+a[n-1]%2;
 a[n-1]=a[n-1]/2;
 y=0;
 for(i=0;i<=n-1;++i)
 if(a[i]!=0) {len=n-i;y=i;break;}
 if(!y) len=0;

mod(a,y,len);
}
}
main()
{
int a[1000],b[1000]; long w,z,c,i,j;
memset(a,0,sizeof(a));memset(b,0,sizeof(b));
while((c=getchar())!=EOF)
{
i=0;j=-1;
a[0]=c-'0';
while((c=getchar())!='\n')
{
       ++i;
       a[i]=c-'0';
}
n=i+1;
s=0;mod(a,0,n);
w=s;
while((c=getchar())!='\n')
{
       ++j;
       b[j]=c-'0';
}
n=j+1;
s=0;mod(b,0,n);
z=s;
if (w>z) printf("wm\n");
else if (w<z) printf("zyf\n");
else printf("neither\n");
}
}
搜索更多相关主题的帖子: include 
2011-11-21 20:08
w7121544
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-11-21
收藏
得分:0 
题可能看不到了....
Description  一天,wm和zyf想比比谁比较正气,但正气这种东西无法量化难以比较,为此,他们想出了一个方法,两人各写一个数字,然后转化为二进制,谁的数字中二进制1多谁就比较正气!
Input  输入包含多组数据,EOF结束。
  每组数据包含两行,代表两个非负整数a,b(0<=a,b<10^100,不含前导0),a为wm写的数字,b为zyf写的数字。Output  每组数据输出一行,输出正气的西电人名字"wm"或"zyf",如果两人的数字中二进制1一样多就输出"neither"。

Sample Input15
16
17
18
20
19
Sample Output
wm
neither
zyf
2011-11-21 20:13
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:20 
程序代码:
#include <stdio.h>
#include <string.h>

void divInt( char *s , int m )
{
    int i , j , k , t , lens = strlen( s ) ;

    t = k = 0 ;

    for( i = 0 ; i < lens ; ++i )
    {
        t = t * 10 + s[i] - '0' ;
        if( t >= m )
        {
            s[i] = t / m + '0' ;
            t %= m ;
        }
        else
            s[i] = '0' ;
    }

    i = j = 0 ;
    while( s[i] == '0' ) i++ ;
    while( ( s[j] = s[i] ) != '\0' )
    {
        i++ ;
        j++ ;
    }
}

int main()
{
    char a[1001] , b[1001] ;
    int suma , sumb , len ;
    while( ~scanf("%s%s", a , b ) )
    {
        suma = sumb = 0 ;

        while( ( len = strlen( a ) ) != 0 )
        {
            if( ( a[len-1] - '0' ) % 2 == 1 )
                suma++ ;
            divInt( a , 2 ) ;
        }

        while( ( len = strlen( b ) ) != 0 )
        {
            if( ( b[len-1] - '0' ) % 2 == 1 )
                sumb++ ;
            divInt( b , 2 ) ;
        }

        if( suma > sumb )
            printf("wm\n") ;
        else if( suma == sumb )
            printf("neither\n") ;
        else printf("zyf\n") ;
    }
    return 0 ;
}
查查runtime error:
1.buffer overflow --- usually caused by a pointer reference out of range.
2.stack overflow --- please keep in mind that the default stack size is 8192K(Notice: In GCC a little overflow will not get a Runtime Error).
3.illegal file access --- file operations are forbidden on our judge system.
素数环的:
程序代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
int vis[21] ;
int res[21] ;
int n ;
int is_prime( int x )
{
    int i ;
    for( i = 2 ; i <= (int)( sqrt( x ) + 0.01 ) ; ++i )
    {
        if( x % i == 0 )
            return 0 ;
    }
    return 1 ;
}
void find_set( int cur )
{
    int i ;
    if( cur == n )
    {
        if( is_prime( res[0] + res[cur-1] ) )
        {
            for( i = 0 ; i < cur ; ++i )
            {
                printf("%d", res[i] ) ;
                if( i != cur - 1 )
                    printf(" ") ;
            }
            printf("\n") ;
        }
    }
    for( i = 2 ; i <= n ; ++i )
    {
        if( !vis[i] && is_prime( i + res[cur-1] ) )
        {
            vis[i] = 1 ;
            res[cur] = i ;
            find_set( cur + 1 ) ;
            vis[i] = 0 ;
        }
    }
}
int main()
{
    int cur = 0 ;
    while( ~scanf("%d", &n ) )
    {
        memset( vis , 0 , sizeof( vis ) ) ;
        cur++ ;
        vis[0] = res[0] = 1 ;
        printf("Case %d:\n", cur ) ;
        find_set( 1 ) ;
        printf("\n") ;
    }
    return 0 ;
}



[ 本帖最后由 『点点滴滴』 于 2011-11-21 20:38 编辑 ]
2011-11-21 20:30
w7121544
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-11-21
收藏
得分:0 
就我所知,RE有三种情况,数组越界,站溢出,除0,首先题目最大是100位,我的数组开的应该够,我试过不用第归做结果还是RE,然后我整个程序只除过2所以我实在是想不出原因
2011-11-21 20:38
w7121544
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-11-21
收藏
得分:0 
素数环那个应该是超时的,我发现奇数位一定是奇数,偶数位一定是偶数,这样运算量减少了一半,可还是超时
2011-11-21 20:53
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:0 
回复 5楼 w7121544
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 『点点滴滴』 于 2011-11-21 21:05 编辑 ]
2011-11-21 21:03
w7121544
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-11-21
收藏
得分:0 
大牛能解释一下为什么么,我看你就是简单的DFS啊,为什么我用就会超时
2011-11-21 21:08
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
收藏
得分:0 
你是西安的?留个QQ我加你,我也是
2011-11-21 21:12
w7121544
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-11-21
收藏
得分:0 
364439895我是西电的,难到你也是?…
2011-11-21 21:16
w7121544
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-11-21
收藏
得分:0 
你叫啥?跟我说个话,我找不到了…
2011-11-21 21:31
快速回复:为什么总是RE···求助···
数据加载中...
 
   



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

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