作者tw00088437 (喵猫 loves fish)
看板C_and_CPP
标题[问题] 没有用阵列和指标可是上传也会RE@@!?
时间Sat Nov 21 18:24:12 2009
( *[1m *[m 为色码,可以按 Ctrl+V 预览会显示的颜色 )
( 未必需要依照此格式,文章条理清楚即可 )
遇到的问题: (题意请描述清楚)
http://zerojudge.tw/ShowProblem?problemid=d541
希望得到的正确结果:
看不出来哪里RE@@"
程式跑出来的错误结果:
本题目共 5 个测试点,您的程式共通过 4 个测试点。(score:49)
获得部分分数 49 分。
错误讯息如下:
*** 第 1 点 (5%):AC (8ms, 700KB)
*** 第 2 点 (9%):AC (4ms, 696KB)
*** 第 3 点 (12%):AC (4ms, 692KB)
*** 第 4 点 (23%):AC (12ms, 700KB)
*** 第 5 点 (51%):RE (SIGSEGV)
执行时发生错误 (SIGSEGV)(11)!!
Segmentation fault, an address reference boundary error.(记忆体区段错误)
可能原因为:
* 通常为使用超过阵列范围
* 指标指向不正确位址!
* 阵列初始化不正确!
* 尝试在执行时期定义阵列长度!
sh: line 1: 21639 程式记忆体区段错误
开发平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
dev c++
有问题的code: (请善用置底文标色功能)
#include<iostream>
using namespace std;
int mods(long long, long long,int);
long long a,b;
int n;
int main()
{
while(cin>>n)
{
cout<<mods(2,n-1,1234567)<<endl;
}
return 0;
}
int mods(long long a,long long b,int n)
{
if(b==0)
return 1;
else if(b%2)
return (a*mods(a,b-1,n))%n;
else
{
unsigned long long value=mods(a,b/2,n);
return ((value%n)*(value%n))%n;
}
}
补充说明:
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.104.175
1F:推 VictorTom:Recursive?? 那就有机会是stack call到爆了啊....@_@" 11/21 18:50
2F:推 AstralBrain:应该有99%是stack爆.. 那题测资有陷阱 11/21 18:58
3F:→ tw00088437:可是已经D/C了 测资才不到2^31次 一个测资应该顶多60 11/21 19:00
4F:推 AstralBrain:讲太明就不好玩了 总之记得检查input范围 11/21 19:00
5F:→ tw00088437:几次就搞定了啊@_@ 这样就会爆吗>< 11/21 19:00
6F:→ tw00088437:才不到2^31... (第三行没有"次"@@) 11/21 19:01
7F:→ tw00088437:我用了看起来最可能爆的2^31-1 (2147483647)跑 11/21 19:03
8F:→ tw00088437:也没事@@" 11/21 19:03
9F:推 AstralBrain:要注意n有给上界但是没有下界... 11/21 19:03
10F:→ tw00088437:@@@@@@@@@@@@ 11/21 19:06
我把while里面改成
while(cin>>n)
{
if(n<1)
cout<<"0"<<endl;
else
cout<<mods(2,n-1,1234567)<<endl;
}
结果变成TLE = =" 怎麽回事....
※ 编辑: tw00088437 来自: 61.228.104.175 (11/21 19:08)
11F:推 AstralBrain:通透了吗XD 其实我觉得虑理这种bug根本是在浪费生命 11/21 19:08
12F:→ AstralBrain:还不如去想下一题 11/21 19:08
13F:→ tw00088437:所以是很没意义的梗吗@_@ 那请直接破我梗告诉我吧= = 11/21 19:09
14F:→ AstralBrain:就input可能会<=0 不过你为什麽会tle我不知道XD 11/21 19:10
15F:→ AstralBrain:s/虑理/处理/g 11/21 19:11
16F:→ tw00088437:囧 你讲完之後我也发现会负数 不过TLE得很诡异 = = 11/21 19:14
17F:→ tw00088437:一样是只有第五个测资TLE 11/21 19:14
18F:→ tw00088437:囧 所以大大写的时候是怎麽处理掉第五个的@@? 11/21 19:18
19F:推 AstralBrain:一样@@ if(n <= 0) cout << 0 << endl; 11/21 19:20
20F:→ AstralBrain:我发现我的n是unsigned long long.. 所以没有负数(?) 11/21 19:20
21F:→ tw00088437:还是TLE....崩溃啦 = = 11/21 19:23