我是一个大傻逼,输出格式wa了一个小时,跪在了一个整数的前导‘0’。。。
解题思路:
1.用一个a[100000]来储存每一个ID,将a数组初始化为-1;
2.遍历每一个输入数据,如果每一个的第一个数m,不等于1,对应a数组的下标赋值为1,说明他有朋友
3.再一次遍历要查询的数tmp,如果a[tmp]==-1说明他没朋友,此时要将a[tmp]=-1,防止查询重复的数,此过程还要用flag(初始化为零)标记,最后flag==0,说明没有一个人,没朋友。
AC代码:
#include <iostream>
#include <cstring>
using namespace std;
int a[100000]; //用一个a[100000]来储存每一个ID
int main()
{
memset(a,-1,sizeof(a)); //将a数组初始化为-1
int n;
cin>>n;
while (n--)
{
int m;
cin>>m;
for (int i = 0; i < m; ++i) {
int temp;
cin>>temp;
if (m!=1) // 遍历每一个输入数据,如果每一个的第一个数m,不等于1,对应a数组的下标赋值为1,说明他有朋友
{
a[temp]=1;
}
}
}
int find,flag=0;
cin>>find;
while (find--)
{
int tmp;
cin>>tmp;
if (a[tmp]==-1)
{
a[tmp]=1; //再一次遍历要查询的数tmp,如果a[tmp]==-1说明他没朋友,此时要将a[tmp]=-1
flag++; //防止查询重复的数,此过程还要用flag(初始化为零)标记,最后flag==0,说明没有一个人,没朋友
if (flag==1)
printf("%05d",tmp); // 这个就是为了输出前导0;
else
printf(" %05d",tmp);
}
}
if (flag==0)
cout<<"No one is handsome"<<endl;
else
cout<<endl;
return 0;
}
c语言中的前导0的输出;
#include <stdio.h>
int main()
{
int a=10;
int b=1;
printf("%08d %08d",a,b);
return 0;
}
// 输出:
D:\qifei\cmake-build-debug\qifei.exe
00000010 00000001
Process finished with exit code 0
c++输出前导零;
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a=10;
int b=1;
cout<<setfill('0')<<setw(8)<<a<<endl;
cout<<setfill('0')<<setw(8)<<b<<endl;
return 0;
}
// 输出
D:\qifei\cmake-build-debug\qifei.exe
00000010
00000001
Process finished with exit code 0