4-2 4-3

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
    char *id;
    int full;
}* List;
int f(char * id,int i){
    return ((int)(id[10]-'0')+i*i)%10;
}
int main(){
    List A[10];
    for(int i=0;i<10;i++){
        A[i]=(List)malloc(sizeof(struct node));
        A[i]->id=(char*)malloc(sizeof(char)*12);
        A[i]->full=0;
    }
    char input[10000];
    scanf("%s",input);
    int t=0, m=0;
    char id[12];
    char a=input[t++];
    while(a!='\n'&&a!='\0'){
        if(a==','){
            m=0;
        }
        else{
            id[m++]=a;
        }
        if(m==11){
            int i=0;
            while(A[f(id,i)]->full){
                i++;
            }
            strcpy(A[f(id,i)]->id,id);
            A[f(id,i)]->full=1;
        }
        a=input[t++];
    }
    for(int i=0;i<10;i++){
        if(i)printf(",");
        if(A[i]->full){
            printf("%s",A[i]->id);
        }
        else{
            printf("0");
        }
        
    }
    
    
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct a{
    char id[19];
    struct a* next;
    int num;
}* S;
int f(char * id){
    long long t=0;
    for(int i=0;i<18;i++){
        t=t*10+(int)(id[i]-'0');
    }
    if(t<0)t=-t;
    return t%10000;
}
int main(){
    S A[10000];
    for(int i=0;i<10000;i++){
    	A[i]=(S)malloc(sizeof(struct a));
    	A[i]->next=NULL;
    	A[i]->num=0;
	}
    int M,N;
    scanf("%d%d",&M,&N);
    
    for(int i=0;i<M;i++){
        char id[19];
        int n;
        scanf("%s%d",id,&n);
        if(n<N)n=N;
        S O=A[f(id)];
        while(O!=NULL&&strcmp(O->id,id)){
        	O=O->next;
		}
        if(O==NULL){
        	O=(S)malloc(sizeof(struct a)) ;
        	strcpy(O->id,id);
			O->next=A[f(id)]->next;
			A[f(id)]->next=O;
			O->num=n; 
		}
		else{
			O->num+=n; 
		}
    }
    scanf("%d",&N);
    for(int i=0;i<N;i++){
    	char id[19];
    	scanf("%s",id);
    	S O=A[f(id)];
    	while(O!=NULL&&strcmp(O->id,id)){
    		O=O->next;
		}
		if(O==NULL){
			printf("No Info\n");
		}
		else{
			printf("%d\n",O->num);
		}
	}
    
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值