一些数论题目的代码

源代码在线查看: pku 3370 鸽巢原理 .txt

软件大小: 9 K
上传用户: guigong
关键词: 代码
下载地址: 免注册下载 普通下载 VIP

相关代码

				#include 
				#include 
				#include 
				#include 
				#include 
				using namespace std;
				
				#define NMAX 100005
				//PKU 3370 鸽巢原理 
				//注意条件:  c ≤ n 
				typedef struct oopsum
				{
				        int data;
				        int where;
				}oopsum;
				oopsum sum[NMAX];
				int shuru[NMAX];
				
				bool cmp(oopsum a,oopsum b)
				{
				     return a.data				}
				
				void solve(int num,int k)
				{
				     int i,j,min,max;
				     sum[0].data=0;
				     for(i=1;i				     {
				      sum[i].data=(sum[i-1].data+shuru[i])%k;
				      sum[i].where=i;
				      } 
				      sort(sum+1,sum+1+num,cmp);
				      for(i=1;i				      {
				       if(sum[i].data==0)
				       {//表示1,2....sum[i].where的数的和能被k整除 
				         for(j=1;j				          printf("%d ",j);
				          printf("\n");
				         return;
				       }
				       else if(sum[i].data==sum[i+1]. data)
				       {//表示sum[min].where,sum[min].where+1...sum[max].where的数的和能被k整除 
				            if(sum[i].where				            {
				             min=i;
				             max=i+1;
				             }
				            else 
				            {
				                 min=i+1;
				                 max=i;
				                 }
				            for(j=sum[min].where+1;j				            printf("%d ",j);
				            printf("\n");
				            return;
				       }
				      }
				}
				
				int main()
				{
				 int num,k,i;
				 scanf("%d %d",&k,&num);
				 while( !(k==0 && num==0))
				 
				 {
				        for(i=1;i				        solve(num,k);
				        scanf("%d %d",&k,&num);
				 }
				 return 0;    
				} 
							

相关资源