/**
ID: njuwz151
TASK: palsquare
LANG: C++
*/
#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; char baseTable[] = {'', '', '', '', '', '', '', '', '', '', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'}; char* reverse(const char* src, int len); char* base10ToBaseN(int number, int base); int main() {
freopen("palsquare.in", "r", stdin);
freopen("palsquare.out", "w", stdout);
int base;
cin >> base;
char* palNumber;
char* palSquare;
char* reverseSquare;
for(int i = ; i <= ; i++) {
if(!palNumber) {
delete palNumber;
palNumber = NULL;
}
palNumber = base10ToBaseN(i, base);
if(!palSquare) {
delete palSquare;
palSquare = NULL;
}
palSquare = base10ToBaseN(i * i, base);
if(!reverseSquare) {
delete palSquare;
palSquare = NULL;
}
reverseSquare = reverse(palSquare, strlen(palSquare));
for(int j = ; j < strlen(palSquare); j++) {
if(palSquare[j] != reverseSquare[j]) {
break;
}
if(j == strlen(palSquare) - ) {
cout << palNumber << " " << palSquare << endl;
}
}
}
return ;
} char* reverse(const char* src, int len) {
char* result = new char[len+];
for(int i = ; i < len; i++) {
result[i] = src[len - - i];
}
result[len] = ;
return result;
} char* base10ToBaseN(int number, int base) {
char* result = new char[];
int len = ;
while(number != ) {
result[len] = baseTable[number % base];
number /= base;
len++;
}
result[len] = ;
return reverse(result, strlen(result));
}

这是原来的代码,在本机跑的时候没有问题,但是在评测的时候报错了。错误信息如下:

program:_malloc.c:2392:_sysmalloc:_Assertion_`(old_top_==_initial_top_(av)_&&_old_size_==_0)_||_((unsigned_long)_(old_size)_>=_MINSIZE_&&_prev_inuse_(old_top)_&&_((unsigned_long)_old_end_&_(pagesize_-_1))_==_0)'_failed. -------------------

在查阅资料之后,应该是说我的代码越界使用了内存,于是我重新写了代码。

 /**
ID: njuwz151
TASK: palsquare
LANG: C++
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string> using namespace std; string baseTable = "0123456789ABCDEFGHIJK"; string reverse(string src); string base10ToBaseN(int number, int base); int main() {
freopen("palsquare.in", "r", stdin);
freopen("palsquare.out", "w", stdout);
int base;
cin >> base;
for(int i = ; i <= ; i++) {
string palNumber = base10ToBaseN(i, base);
string palSquare = base10ToBaseN(i * i, base);
string reverseSquare = reverse(palSquare);
for(int j = ; j < palSquare.size(); j++) {
if(palSquare[j] != reverseSquare[j]) {
break;
}
if(j == palSquare.size() - ) {
cout << palNumber << " " << palSquare << endl;
}
}
} return ;
} string reverse(string src) {
int len = src.size();
string result;
for(int i = len - ; i > -; i--) {
result += src[i];
}
return result;
} string base10ToBaseN(int number, int base) {
string result;
while(number > ) {
result = baseTable[number % base] + result;
number /= base;
}
return result;
}

使用了string 来替代数组,说起来我也不是专业写C/C++的,之前char数组和string混合使用出错了,就单用char数组解决问题了,但是这次没能用好char数组,说明我对内存管理还是有一定的认知缺乏。

USACO-palsquare 遇到的一个坑的更多相关文章

  1. 用html5的视频元素所遇到的第一个坑

    html5 有一个video标签,这个是被大家所熟知的事情.按照w3c的规范,我认真的写出如下代码: <video preload="auto" controls=" ...

  2. 监控jvm的一个坑

    监控jvm的一个坑 1,遇到的问题 我按照以往文档,在catalina.sh里追加jvm的监控api,如下 紧接着我启动 tomcat. 未报任何错误. 发现 lsof –i:12000, 12000 ...

  3. JavaScript中sort方法的一个坑(leetcode 179. Largest Number)

    在做 Largest Number 这道题之前,我对 sort 方法的用法是非常自信的.我很清楚不传比较因子的排序会根据元素字典序(字符串的UNICODE码位点)来排,如果要根据大小排序,需要传入一个 ...

  4. PHP中逻辑运算符and/or与||/&&的一个坑

    我原来以为PHP中的and和&&是一样的, 只是写法上为了可读性和美观, 事实上我错了. 这里面深藏了一个坑! 看以下代码: $bA = true; $bB = false; $b1  ...

  5. 困扰多日的C#调用Haskell问题竟然是Windows的一个坑

    最近一直被C#调用Haskell时的“尝试读取或写入受保护的内存”问题所困扰(详见C#调用haskell遭遇Attempted to read or write protected memory,C# ...

  6. 在VS2012中GridView的一个坑

    使用GridView的时候遇到了一个坑,一个增加一个选择按钮~貌似在某些情况下会出现一个是否允许选择的属性,貌似会默认为fals,然后就返回不了指定ID!坑,巨坑!但是今天居然找不到这个属性了,难道是 ...

  7. 【转载】linux命令行计算器bc的一个“坑”

    [转载自]http://blog.chinaunix.net/uid-174325-id-3518953.html 结论:ibase,obase可以使用在不同的计算公式里,但是尽量把obase放iba ...

  8. 使用ffmpeg视频编码过程中踩的一个坑

           今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果:                   ...

  9. Jquery-全选和取消的一个坑

    在做一个商城的购物车的时候遇到了一个坑, 购物车一般都有全选按钮, 再次点击就会全部消除, 在网上查到的答案全部都是使用attr来做的, 无一例外都不能用, 之后才知道要使用jquery的prop和r ...

  10. Collection<T> 的一个坑

    当前所在的公司偏好使用 Collection<T>(System.Collections.ObjectModel), 这货比起List<T>不仅少了很多实用方法, 而且还有一个 ...

随机推荐

  1. Haproxy------在windows下配置负载均衡

    配置Haproxy 1.解压Haproxy到d:\haproxy 2.置haproxy.cfg文件 global log 127.0.0.1 local0 maxconn 1500 daemon de ...

  2. Another kind of Fibonacce(矩阵快速幂,HDU3306)

    Another kind of Fibonacci Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  3. vue的双向绑定原理及实现

    前言 使用vue也好有一段时间了,虽然对其双向绑定原理也有了解个大概,但也没好好探究下其原理实现,所以这次特意花了几晚时间查阅资料和阅读相关源码,自己也实现一个简单版vue的双向绑定版本,先上个成果图 ...

  4. 张小龙的野心:用小程序重构web|小程序好处及可能的不足

    一:张小龙的野心:用小程序重构web 一 很多年以前,张小龙写了一款软件:Foxmail. 这款软件当年有数百万用户,这是一个相当庞大的量,因为彼时网民也只有千万当量级的规模. 我是一个非常忠实的用户 ...

  5. Java反射机制剖析(三)-简单谈谈动态代理

    通过Java反射机制剖析(一)和Java反射机制剖析(二)的学习,已经对反射有了一定的了解,这一篇通过动态代理的例子来进一步学习反射机制. 1.     代理模式 代理模式就是为其他对象提供一种代理来 ...

  6. Asynchronous and Distributed Programming in R with the Future Package

    Every now and again someone comes along and writes an R package that I consider to be a 'game change ...

  7. [asp.net mvc 奇淫巧技] 03 - 枚举特性扩展解决枚举命名问题和支持HtmlHelper

    一.需求 我们在开发中经常会遇到一些枚举,而且这些枚举类型可能会在表单中的下拉中,或者单选按钮中会用到等. 这样用是没问题的,但是用过的人都知道一个问题,就是枚举的命名问题,当然有很多人枚举直接中文命 ...

  8. Docker - docker machine

    前言 之前在使用docker的时候,对于docker-machine的理解有一些误解(之前一直以为docker-machine和docker-engine等价的,只不过是在window或者mac平台上 ...

  9. Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流

    #Java基础测试 涉及知识点:数组,面向对象,重载,重写,继承,集合,排序,线程,文件流 一.多项选择题(可能是单选,也可能是多选) 1.下列标识符命名不合法的是(   D  ). A.$_Name ...

  10. git上传本地项目到github

    git软件下载地址:https://git-scm.com/download/ 1. 在GitHub上建立项目登录GitHub后,你可以在右边靠中那里找到一个按钮“New Repository”,点击 ...