字节跳动第3题IP还原
//我第三题的思路就是穷举,看每次分段满足IP地址的限定。
//穷举的过程是通过取余来判定满足与否的。
//下面这个代码错误出在哪里,还请大佬明示???
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
long long IP_BUG;
cin >> IP_BUG;
long long temp = IP_BUG;
int weishu = 0;
while (temp)
{
temp /= 10;
weishu++;
}
int result = 0;
long long temp2 = IP_BUG;
int max = 256;
for (int i = 1; i < weishu; i++)
{
for (int j = i+1; j < weishu; j++)
{
for (int k = j+1; k < weishu; k++)
{
temp2 = IP_BUG;
if (temp2 % (10 ^ i) < max)
{
temp2 /= (10 ^ i);
if (temp2 % (10 ^ (j-i)) < max)
{
temp2 /= (10 ^ (j - i));
if (temp2 % (10 ^ (k - j)) < max)
{
temp2 /= (10 ^ (k - j));
if (temp2 < max)
{
result++;
}
}
}
}
}
}
}
cout << result<<endl;
system("pause");
}
#笔试题目##字节跳动##C/C++##include<stdlib.h>
using namespace std;
int main()
{
long long IP_BUG;
cin >> IP_BUG;
long long temp = IP_BUG;
int weishu = 0;
while (temp)
{
temp /= 10;
weishu++;
}
int result = 0;
long long temp2 = IP_BUG;
int max = 256;
for (int i = 1; i < weishu; i++)
{
for (int j = i+1; j < weishu; j++)
{
for (int k = j+1; k < weishu; k++)
{
temp2 = IP_BUG;
if (temp2 % (10 ^ i) < max)
{
temp2 /= (10 ^ i);
if (temp2 % (10 ^ (j-i)) < max)
{
temp2 /= (10 ^ (j - i));
if (temp2 % (10 ^ (k - j)) < max)
{
temp2 /= (10 ^ (k - j));
if (temp2 < max)
{
result++;
}
}
}
}
}
}
}
cout << result<<endl;
system("pause");
}