1. 相反数
为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325的"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的数,我们得到5231+1325=6556.如果颠倒之后的数字有前缀零,前缀零将会被忽略。例如n = 100, 颠倒之后是1.
using namespace std;
int n;
int main() {
cin >> n;
int cn = 0;
int x = n;
while(x) {
cn = cn * 10 + x % 10;
x /= 10;
}
cout << n + cn << endl;
return 0;
}
2. Inplace 字符串修改
http://blog.csdn.net/hk52222/article/details/49585197
字符串翻转
void Reverse(char *pBegin, char *pEnd){
if(pBegin==NULL || pEnd==NULL)
return;
while (pBegin<pEnd) {
char temp=*pBegin;
*pBegin=*pEnd;
*pEnd=temp;
pBegin++;
pEnd--;
}
}
3. 反向输出链表
https://www.cnblogs.com/codingmengmeng/p/5857055.html
4. 十进制转二进制
//十进制转换为二进制
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
string s;
int main(int argc,char * argv[])
{
int n;
while(cin>>n)
{
s="";
for(int a = n; a ;a = a/2)
{
//二进制只有两个基数,所以转换起来比较方便,若是转换为其他进制可以使用switch结构
s=s+(a%2?'1':'0');
}
//字符串反转
//s.begin() 获得字符串的开始位置
//s.end() 获得字符串的结尾位置
std::reverse(s.begin(),s.end());
cout<<s<<endl;
//c_str() 将string类型的字符创转化为char*
//const char *sss=s.c_str();
//cout.width(11);
//cout<<n<<(n<0?"-->-":"-->")<<sss<<"\n";
}
return 0;
}
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。【位运算】
class Solution {
public:
int NumberOf1(int n) {
int charNum = sizeof(n);
int flag = n;
int num = 0;
for (int i = 0; i < charNum * 8; i++)
if (flag & 1)
num++;
flag = flag >> 1;
}
return num;
}
};
5. 丑数表,素数表
http://blog.csdn.net/u011116672/article/details/50264901