codeforces 250B Restoring IPv6

2014-11-24 12:17:34 · 作者: · 浏览: 1

题目:大意是在说给定一个ipv6地址的简记形式,让你给它补全输出。

简记的规则大致是把地址中的一部分0去掉,其中还包括一连串的0,此时可用::来代替。

方法:首先记录给定的字符串中的:的个数,让后就能确定::中间要补全的0000的个数,然后对于每个小地址(例如bfd),补全失去的0就好了,这时候可以使用printf输出补0的功能,即:printf("%04s",s);

注意:本来每个字符串中:的个数是不能超过7个的,但是会出现::连用,就可能出现8个,这样对于计算::之间补全0000的个数计算就会造成困难,所以要单独处理。

代码:

#include 
  
   
#include 
   
     #include 
    
      using namespace std; int main() { int n; cin>>n; while(n--) { char s[100]; char t[5]; memset(t,0,sizeof(t)); cin>>s; int len=strlen(s),k=0 ; int ans=0,tt=0; for(int i=0; i