1、求任意进制:
vector<int> vec;
while(1)
{
vec.push_back(m % n);//短除法求任意进制。
if(m/n == 0)
break;
m /= n;
}
2、枚举法求最大公约数:
//求sum与a的最大公约数。
for (int i = a ; i >= 1 ; --i)//从最大数往前循环。
{
if(sum % i ==0 && a % i ==0)//枚举法求最大公约数。
{
j = i;//j为最大公约数。
break;
}
}
3、大数问题用python解决:
while True :
try :
a, b = map(int,input().split())
if a <= 2*3.14*b :
print("Yes")
elif a > 2*3.14*b :
print("No")
except :
break
4、判断素数的简单方法:
bool fun(int i)
{
if(i==2)//2是素数。
return true;
else
{
if(i%2)//如果为奇数才判断。
{
int flag = 1;
//素数的定义是:只能被1和本身整除的数。
for(int j=2 ; j<=i/2 ; ++j)//显然大于某个数的一半肯定是不能整除这个数的。
{
if(i%j == 0)
{
flag = 0;//能被其他的数整除,标志位取反,循环结束。
break;
}
}
if(flag)
return true;
else
return false;
}
else//大于2的偶数不可能是素数。
{
return false;
}
}
}
5、判断一个数是不是整数:
//判断一个数是不是整数,可以取整后与原数对比,不相等说明原数为浮点数。
if( n == (int)(n) );
//由此可以用来判断一个数是否是平方数:
if( sqrt(n) == (int)(sqrt(n)) );
6、大数乘法:
string BigNumMultiply(string str1, string str2)
{
int size1 = str1.size(), size2 = str2.size();
string str(size1 + size2, '0');
for (int i = size2 - 1;i >= 0;--i)
{
int mulflag = 0, addflag = 0;
for (int j = size1 - 1;j >= 0;--j)
{
int temp1 = (str2[i] - '0')*(str1[j] - '0') + mulflag;
mulflag = temp1 / 10;
temp1 = temp1 % 10;
int temp2 = str[i + j + 1] - '0' + temp1 + addflag;
str[i + j + 1] = temp2 % 10 + 48;
addflag = temp2 / 10;
}
str[i] += mulflag + addflag;
}
if (str[0] == '0')
str = str.substr(1, str.size());
return str;
}
7、大数加法:
string bigAdd(string num1, string num2)
{
string res;
if (num1.size() == 0)
{
res = num2;
return res;
}
if (num2.size() == 0)
{
res = num1;
return res;
}
res = "";
int n1 = num1.size() - 1, n2 = num2.size() - 1;
int carry = 0;
while (n1 >= 0 || n2 >= 0)
{
int a = n1 >= 0 ? num1[n1--] - '0' : 0;
int b = n2 >= 0 ? num2[n2--] - '0' : 0;
int t = carry + a + b;
carry = t / 10;
t = t % 10;
res = to_string(t) + res;
}
//判断是否还有进位
while (carry)
{
int t = carry / 10;
carry %= 10;
res = to_string(carry) + res;
carry = t;
}
return res;
}
8、dfs与bfs:
int dfs(int node)
{
int visCount = 1;
visited[node] = true;
for (auto neighbour: graph[node])
{
if (!visited[neighbour])
{
visCount += dfs(neighbour);
}
}
return visCount;
}
int bfs(int startNode)
{
queue<int> bfsQueue;
vector<bool> visited(n);
int visCount = 0;
visited[startNode] = true;
bfsQueue.push(startNode);
while (!bfsQueue.empty())
{
int currentNode = bfsQueue.pop();
for (auto neighbour: graph[currentNode])
{
if (!visited[neighbour])
{
visited[neighbour] = true;
bfsQueue.push(neighbour);
}
}
visCount += 1;
}
return visCount;
}
标签:积累,10,string,int,res,基础知识,解题,str,carry From: https://blog.51cto.com/u_6526235/7788156