#include <iostream> using namespace std; #define int long long int cnt[5]; signed main() { string s; cin>>s; int j = 4; int len = s.size(); for(int i = 0;i<len;i++){ int res = 0; while(s[i]!='.'&&i<len){ res = res*10+(s[i]-'0');i++; } cnt[j--] = res; } cnt[2]<<=8,cnt[3]<<=16,cnt[4]<<=24; cout<<cnt[1]+cnt[2]+cnt[3]+cnt[4]<<'\n'; int num; cin>>num; int a,b,c,d; a = num>>24; num = num-(a<<24); b = num>>16; num = num-(b<<16); c = num>>8; d=num-(c<<8); // d = num; cout<<a<<'.'<<b<<'.'<<c<<'.'<<d<<'\n'; return 0; } // 64 位输出请用 printf("%lld")
注意long long的使用即可,然后将第一个IP地址转换为对应的数字,转换(左移)即可,第二个使用(右移),使用位运算进行计算即可。