openjudge 2739 测试了多组数据结果都是正确的,但是oj提交结果为WA,有人感兴趣的话看看
2014-04-11 03:38
232 查看
原题目地址:http://bailian.openjudge.cn/practice/2739/
main函数里主要是调用乘法,乘法里边就是一般的大数乘法
#include <iostream>
#include <cstring>
#define MAX_LEN 200
using namespace std;
int isLarger(char *a,char *b){
int len1=strlen(a);
int len2=strlen(b);
int i,j;
if(len1>len2) return 1;
else if(len1<len2) return -1;
else {
for(i=0,j=0;i<len1;i++,j++){
if(a[i]>b[j]) return 1;
else if(a[i]==b[j]) continue;
else return -1;
}
}
if (i=len1) return 0;
}
void reverse(char *a){
int len,i;
char ch;
len=strlen(a);
for(i=0;i<len/2;i++){
ch=a[i];
a[i]=a[len-i-1];
a[len-i-1]=ch;
}
}
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';
}
}
else
for(int i=len1+len2-2;i>=0;i--){
sum[i]+='0';
}
//memcpy(a,sum,strlen(sum));
strcpy(a,sum);
reverse(a);
//]='\0';
}
int main()
{
int n,x=0;
char ch;
cin>>n;
char a[MAX_LEN],b[MAX_LEN],c[MAX_LEN];
while(n--){
x=0;
memset(c,'\0',sizeof(c));
memset(b,'\0',sizeof(b));
memset(a,'0',sizeof(a));
a[0]='1';
a[1]='\0';
cin>>c>>b;
int t;
// cout<<a<<"**"<<endl;
while((t=isLarger(a,b))<=0){
// cout<<t<<endl;
// cout<<a<<endl;
mul(a,c);
x++;
}
//cout<<a<<"----";
cout<<x-1<<endl;
}
//cin>>ch;
//memset(result,0,sizeof(result));
return 0;
}
main函数里主要是调用乘法,乘法里边就是一般的大数乘法
#include <iostream>
#include <cstring>
#define MAX_LEN 200
using namespace std;
int isLarger(char *a,char *b){
int len1=strlen(a);
int len2=strlen(b);
int i,j;
if(len1>len2) return 1;
else if(len1<len2) return -1;
else {
for(i=0,j=0;i<len1;i++,j++){
if(a[i]>b[j]) return 1;
else if(a[i]==b[j]) continue;
else return -1;
}
}
if (i=len1) return 0;
}
void reverse(char *a){
int len,i;
char ch;
len=strlen(a);
for(i=0;i<len/2;i++){
ch=a[i];
a[i]=a[len-i-1];
a[len-i-1]=ch;
}
}
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';
}
}
else
for(int i=len1+len2-2;i>=0;i--){
sum[i]+='0';
}
//memcpy(a,sum,strlen(sum));
strcpy(a,sum);
reverse(a);
//]='\0';
}
int main()
{
int n,x=0;
char ch;
cin>>n;
char a[MAX_LEN],b[MAX_LEN],c[MAX_LEN];
while(n--){
x=0;
memset(c,'\0',sizeof(c));
memset(b,'\0',sizeof(b));
memset(a,'0',sizeof(a));
a[0]='1';
a[1]='\0';
cin>>c>>b;
int t;
// cout<<a<<"**"<<endl;
while((t=isLarger(a,b))<=0){
// cout<<t<<endl;
// cout<<a<<endl;
mul(a,c);
x++;
}
//cout<<a<<"----";
cout<<x-1<<endl;
}
//cin>>ch;
//memset(result,0,sizeof(result));
return 0;
}
相关文章推荐
- Common Subsequence 动态规划 不难 但是犯了个错误刚开始 没用标记数组 直接使用a判断 是否为零 结果是测试数据有很多key为零 超时
- #1094 : Lost in the City(测试用例正确,但提交显示WA,求发现我程序错误)
- ajax提交表单或者其他数据的时候能拿到结果但是还是会走errot分支
- ajax异步提交数据接收不到一般都是什么原因以及解决方案
- 九度OJ 1006 ZOJ问题 (这题测试数据有问题)
- Postman Postman测试接口之POST提交本地文件数据
- Java实现OJ多组测试数据的输入方法
- 前端提交的中文数据与后端数据库无法正确匹配的问题
- ACM 4描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,
- bootstrap-table当查询后再去点击分页时,后台返回的数据是正确的,前台也显示正确了,但是当我点击分页时,列表会刷新为最初的数据,而不再是本次查询得到的数据
- caffe训练模型后,使用模型测试的分类结果全部都是相同的
- JMeter察看结果树响应数据都是相同原因
- BAPI或FM的测试结果提交
- 用ajax提交数据到后台,并且把计算结果从后台把数据转到前台(该过程不刷新页面)
- 一个有意思的测试,看看什么样的Linux发行版最适合自己!我的测试结果是:Debian !
- 最小生成树的Kruskal算法(C/C++)--附有测试数据和结果
- j2ee的web项目怎么防止,重复提交的问题?(即点击了提交,后台新增了两条数据,也就是说,其实是点了多次提交,发起了多次http url,这样就插入了多条相同数据,但是主键id是不同的)
- poj 1177picture测试数据结果
- OJ题目测试数据生成方法
- svn 请求的名称有效并且在数据库中找到,但是它没有相关的正确的数据来被解析