阅读程序 提高篇(9-14题)

9.[NOIP2004]

/*
9.[NOIP2004]
*/
#include <stdio.h>
char c[3][200];
int s[10], m, n;
void numara(){
	int i, j, cod, nr;
  for (j = 0; j < n; j++){
		nr = 0; cod = 1;
		for (i = 0; i < m; i++){
			if (c[i][j] == '1'){
				if (!cod){cod = 1; s[nr]++; nr = 0;}
			}
			else{
				if (cod){nr = 1; cod = 0;}
				else nr++;
			}
		}
		if (!cod) s[nr]++;
	}
}
int main(){
	int i, j;
	scanf("%d %d\n", &m, &n);
	for (i = 0; i < m; i++) gets(c[i]);
	numara();
	for (i = 1; i <= m; i++)
if (s[i] != 0) printf("%d %d ", i, s[i]);
	return 0;
}
输入:
3 10
1110000111 
1100001111
1000000011
输出:
答案:1 4 2 1 3 3 
/*

阅读程序 提高篇 10.[NOIP2004]

https://blog.csdn.net/dllglvzhenfeng/article/details/130978472


11、NOIP2004提高组 阅读程序写结果 4.2 

#include <cstdio>
using namespace std;
int number,ndata,sum,data[100];//data[101] pascal
void solve(int s,int sign,int n){
    int i;
    for(i=s;i<ndata;i++){//i<=ndata pascal
        sum+=sign*(number/n/data[i]);//number/(n*data[i]) pascal
        solve(i+1,-sign,n*data[i]);
    }
}
int main(){
    int i;    
    scanf("%d %d",&number,&ndata);
    sum=0;
    for(i=0;i<ndata;i++)  scanf("%d",&data[i]);
    solve(0,1,1);//solve(1,1,1); pascal
    printf("%d\n",sum);
    return 0;
}
//输入:1000 3 5 13 11
//输出:
//答案:zzzaaabbbcccy 

12.[NOIP]2005--第三章 阅读程序

/*
12.[NOIP]2005--第三章 阅读程序 
*/ 
#include 
long g(long k) {
    if (k <= 1) return k;
    return (2002 * g(k - 1) + 2003 * g(k - 2)) % 2005;
}
int main() {
    long n;
    scanf("%ld", &n);
    printf("%ld\n", g(n));
    return 0;
}
/*
输入:2005
输出:
答案:31 
*/

13、NOIP2007初赛普及组_阅读程序写结果3.4

#include <iostream.h> 
#include "ctype.h" 
void expand(char s1[],char s2[]) 
{ 
	int i,j,a,b,c; 
	j=0; 
	for(i=0;(c=s1[i])!='\0';i++) 
    	if(c=='-') 
     	{ 
			a=s1[i-1]; 
			b=s1[i+1]; 
       		if ( isalpha(a)&&isalpha(b) || isdigit(a)&&isdigit(b) ) 
 			//函数isalpha(a)用于判断字符a是否为字母,isdigit(b) 用于判断字符b是否为数 
			//字,如果是,返回1,否则返回0  
       		{ 
				j--; 
        		do  
					s2[j++]=a++; 
        		while(tolower(a)<tolower(s1[i+1]));
       		}
        	else s2[j++]=c;
		} 
    	else 	s2[j++]=c; 
  	s2[j]='\0'; 
} 
int main() 
{ 
	char s1[100],s2[300]; 
	cin>>s1; 
	expand(s1,s2); 
	cout<<s2<<endl; 
} 
/*
输入:wer2345d-h454-82qqq        
输出:____________________________________
答案:wer2345defgh45456782qqq 
*/

14、NOIP2007提高组初赛4.4

/*
NOIP2007提高组初赛4.4
*/
#include <bits/stdc++.h>
using namespace std;
char ch[]={'q','A','S','O','R','T','E','X','A','M','P','L','E'};
int n=12;
void shift(int k, int n)
{
	char v;
	int j;
	v=ch[k]; j=k+k;
	while (j<=n)
	{
		if((j<n) && (ch[j]<ch[j+1])) j++;
		if (v<ch[j]){ 
			ch[j/2]=ch[j]; j*=2; 
		}
		else
			return;
		ch[j/2]=v;
	}
}
void hpsrt(void)
{
	int k;
	char tmp;
	for (k=n/2; k>0; k--) shift(k,n);
	cout<<"No.1: ";
	for(k=1; k<=n; k++) cout<<ch[k];
	cout<<endl;
	for (k=n; k>0; k--)
	{ 
		tmp=ch[1]; ch[1]=ch[k]; ch[k]=tmp;
		shift(1,k-1);
	}
}
int main()
{
	int k;
	hpsrt();
	cout<<"No.2: ";
	for(k=1; k<=n; k++) cout<<ch[k];
	cout<<endl;
	return;
}
/*
输出:
答案:
No.1:XTORSEAAMPLE
No.2:AAEELMOPRSTX 
*/

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dllglvzhenfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值