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
*/