L1-020 帅到没朋友---题解

我是一个大傻逼,输出格式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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章