openjudgenoi的网站上出现WA,有哪位大神帮忙看下吗?

openjudge 3394:身份确认
[问题点数:20分,结帖人pkuzhx]
本版专家分:92
结帖率 100%
CSDN今日推荐
本版专家分:7911
2015年6月 C/C++大版内专家分月排行榜第二2015年5月 C/C++大版内专家分月排行榜第二
2015年4月 C/C++大版内专家分月排行榜第三
本版专家分:7911
2015年6月 C/C++大版内专家分月排行榜第二2015年5月 C/C++大版内专家分月排行榜第二
2015年4月 C/C++大版内专家分月排行榜第三
本版专家分:92
本版专家分:92
本版专家分:92
匿名用户不能发表回复!
其他相关推荐原题目地址:http://bailian.openjudge.cn/practice/2739/
main函数里主要是调用乘法,乘法里边就是一般的大数乘法
#include &iostream&
#include &cstring&
#define MAX_LEN 200
int isLarger(char *a,char *b){
int len1=strlen(a);
int len2=strlen(b);
if(len1&len2) return 1;
else if(len1&len2) return -1;
for(i=0,j=0;i&len1;i++,j++){
if(a[i]&b[j]) return 1;
else if(a[i]==b[j])
else return -1;
if (i=len1) return 0;
void reverse(char *a){
int len,i;
len=strlen(a);
for(i=0;i&len/2;i++){
a[i]=a[len-i-1];
a[len-i-1]=
void mul(char *a,char *b){
int tmp=0,carry=0;
char sum[MAX_LEN];
memset(sum,'\0',sizeof(sum));
int len1,len2;
memset(m,0,sizeof(m));
len1=strlen(a);
len2=strlen(b);
reverse(a);
reverse(b);
for(int i=0;i&len2;i++){
//carry=0;
for(int j=0;j&len1;j++){
tmp=sum[i+j]+(a[j]-'0')*(b[i]-'0');
sum[i+j]=tmp%10;
sum[i+j+1]=tmp/10;
//int i = 0;
if(sum[len1+len2-1]!='\0'){
for(int i=len1+len2-1;i&=0;i--){
sum[i]+='0';
for(int i=len1+len2-2;i&=0;i--){
sum[i]+='0';
//memcpy(a,sum,strlen(sum));
strcpy(a,sum);
reverse(a);
int main()
int n,x=0;
char a[MAX_LEN],b[MAX_LEN],c[MAX_LEN];
while(n--){
memset(c,'\0',sizeof(c));
memset(b,'\0',sizeof(b));
memset(a,'0',sizeof(a));
a[1]='\0';
cin&&c&&b;
// cout&&a&&"**"&&
while((t=isLarger(a,b))&=0){
//cout&&a&&"----";
cout&&x-1&&
//memset(result,0,sizeof(result));
openjudge整数划分问题
1:复杂的整数划分问题查看提交统计提问总时间限制: 200ms内存限制: 65536kB描述将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1&=n2&gt...
本地和oj同样数据测出来不同结果的原因
1.11在做codevs1014装箱问题的时候,由于我编程水平不够,发生了一件令当时的我匪夷所思的事。特此记录,防止今后在出现类似问题。
题目描述 Description:
有一个箱子容量为V(正...
OJ刷题---相同的数字!
题目要求:
输入代码:
int sameNum(int *a,int n1,int *b,int n2, int *c)...
oj的评测结果
Accepted: OK!正确!这是你最期望看到的结果。
Presentation Error: 你的程序的输出格式和题目所要求的不是完全一致,但是输出的...
依据judge返回结果的查错表
运行时间较长?最后若干个数据点出错?整型变量越界?换用long long
极端(极大)情况未处理?
0ms WA?第一个数据点出错?初始条件(下界)未处理?
空格/回车不匹...
OJ 系列之简单错误记录(转)
摘要题目 描述: 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 处理: 1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计...
本地和oj同样数据测出来不同结果的原因
1.11在做codevs1014装箱问题的时候,由于我编程水平不够,发生了一件令当时的我匪夷所思的事。特此记录,防止今后在出现类似问题。
题目描述 Description:
有一个箱子容量为V(正...
Bailian2981 大整数加法【大数】(POJ NOI0106-10)
问题链接:POJ NOI0106-10 大整数加法。
大整数加法
求两个不超过200位的非负整数的和。
输入有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。输出一行,即...
没有更多推荐了,C++实验的一道题,有点复杂的模拟,思路很简单,但是在我校oj上一直过不了,连个PE都不给我,害的我dubug了好久,然后去poj上交了,ac,,,莫非是数据的锅。。
总时间限制:
你的一个朋友买了一台电脑。他以前只用过计算器,因为电脑的显示器上显示的数字的样子和计算器是不一样,所以当他使用电脑的时候会比较郁闷。为了帮助他,你决定写一个程序把在电脑上的数字显示得像计算器上一样。
输入包括若干行,每行表示一个要显示的数。每行有两个整数s和n (1 &= s &= 10, 0 &= n &= ),这里n是要显示的数,s是要显示的数的尺寸。
如果某行输入包括两个0,表示输入结束。这行不需要处理。
显示的方式是:用s个’-‘表示一个水平线段,用s个’|’表示一个垂直线段。这种情况下,每一个数字需要占用s+2列和2s+3行。另外,在两个数字之间要输出一个空白的列。在输出完每一个数之后,输出一个空白的行。注意:输出中空白的地方都要用空格来填充。
数字(digit)指的是0,或者1,或者2……或者9。
数(number)由一个或者多个数字组成。
提题意很简单,就是将数字用火柴棒来表示,因为数字8是包含了所有数字的形状的,而8是由七根火柴棒(图是盗的)组成的,可以看出,对一个数字来说,每一行仅有3种出现形式,-(|)或者空格,所以只需要判断根据火柴棒的位置然后按行输出就行了判断一下就OK了,用数组来保存每一个数字在7个位置出现的情况:
char n1[11]={"- -- -----"};
----- --"};
{"|| |||||||"};
{"- -- -- --"};
需要注意的是最后一个数字后面不要输出空列,不然PE。
#include&cstdio&
#include&iostream&
#include&cstring&
#include&string&
#include&cmath&
#include&map&
#include&set&
#include&cctype&
#include&ctime&
#define INF 0x3f3f3f3f3
#define PI acos(-1.0)
using namespace std;
char num[7][10] = {{'-',' ','-','-',' ','-','-','-','-','-'},{'|',' ',' ',' ','|','|','|',' ','|','|'},{'|','|','|','|','|',' ',' ','|','|','|'},{' ',' ','-','-','-','-','-',' ','-','-'},{'|',' ','|',' ',' ',' ','|',' ','|',' '},{'|','|',' ','|','|','|','|','|','|','|'},{'-',' ','-','-',' ','-','-',' ','-','-'}};
void print(int s,int *str,int t)
int i,j,k;
for(i=0;i&2*s+3;i++)
for(j=t-1;j&=0;j--)
cout&&' ';
for(k=1;k&s+1;k++)
cout&&num[0][str[j]];
cout&&' ';
cout&&' ';
else if(i==s+1)
cout&&' ';
for(k=1;k&s+1;k++)
cout&&num[3][str[j]];
cout&&' ';
cout&&' ';
else if(i==2*s+2)
cout&&' ';
for(k=1;k&s+1;k++)
cout&&num[6][str[j]];
cout&&' ';
cout&&' ';
else if(i&s+1)
cout&&num[1][str[j]];
for(k=1;k&s+1;k++)
cout&&' ';
cout&&num[2][str[j]];
cout&&' ';
cout&&num[4][str[j]];
for(k=1;k&s+1;k++)
cout&&' ';
cout&&num[5][str[j]];
cout&&' ';
int main()
int s,n,i;
int str[10];
while(~scanf("%d%d",&s,&n)&&(s||n))
str[i++]=n%10;
print(s,str,i);
还有一个解法,就是开一个足够大的数组,将所有的数字存在里面,全部处理出来之后在一起逐行输出,大概是num[30][23*10] (最多八位数,s最大为十,所以最多需要8*23列,加上空列,同理最多20行,加上空行);代码有兴趣的同学可以自己试一下。
没有更多推荐了,题目来源中国MOOC网,程序设计与(二)第一周作业1 限制总时间限制: 1000ms 内存限制: 1024kB描述有一种特殊的二进制密码锁,由n个相连的按钮组成(n&30),按钮有凹/凸两种状态,用手按按钮会改变其状态。然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态。输入两行,给出两个由0、1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代表凸。输出至少需要进行的按按钮操作次数,如果无法实现转变,则输出impossible。样例输入011 000样例输出1解题报告思路分析首先思考枚举法,每个按钮有2种状态,但是最多可能有30个灯,因此状态有2^30之多,穷举一定会超时。重点1 一个灯如果按了第二下,就会抵消上一次按下所产生的影响。因此,一个灯只有按或者不按两种情况,不存在一个灯要开关多次的情况。例如八个灯
这和八个灯
只按一次3后
是完全相同的情况重点2 我们只需要考虑是否按下第一个灯。因为如果第一个灯的状态被确定了,那么是否按下第二个灯也就决定了(如果第一个灯与期望不同,则按下,如果期望相同,则不按下)同理,第三个灯是否按下也唯一确定。所以,本题只要分两种情况:灯1被按下和没有被按下 之后使用for循环判断别的灯是否需要按下即可 当循环结束,若现在的灯况与答案相同,则输出两种方案中按键次数最少的,若不同,则impossible!#include &iostream&
#include &cstdio&
#include &cstring&
#include &algorithm&
// 枚举第一个按钮是否按下的两种情况即可,对于指定的一种情况,后面的事情都是确定的
inline void SetBit(int& n, int i, int v)
n |= (1 && i);
// 设置 n 的第 i 位为 1;
n &= ~(1 && i);
// 设置 n 的第 i 位为0;
inline void
FlipBit(int &n, int i)
n ^= (1 && i);
// 与 1 异或跳转,与 0 异或保持不变
inline int GetBit(int n, int i)
return (n && i) & 1;
// 返回 n 的 第 i 位
int main()
char line[40];
destLock = lock = oriLock = 0;
int N = strlen(line);
for (int i = 0; i & N; ++i)
SetBit(oriLock, i, line[i] - '0'); // oriLock 保存原字符数组的每一位
for (int i = 0; i & N; ++i)
SetBit(destLock, i, line[i] - '0');
int minTimes = 1 && 30;
for (int p = 0; p & 2; ++p)
{ // p 代表最左边按钮, p 可能为0,或1
lock = oriL
int times = 0;
// 统计次数
int curButton =
for (int i = 0; i & N; ++i)
if (curButton)
if (i & 0)
FlipBit(lock, i - 1);
FlipBit(lock, i);
if (i & N - 1)
FlipBit(lock, i + 1);
if (GetBit(lock, i) != GetBit(destLock, i))
curButton = 1;
curButton = 0;
if (lock == destLock)
minTimes = min(minTimes, times);
if (minTimes == 1 && 30)
cout && " impossible" &&
cout && minTimes &&
没有更多推荐了,

我要回帖

更多关于 openjudge 的文章

 

随机推荐