硬币 叼炸天
在桌面上有一排硬币,共N枚,每一枚硬币均为正面朝上。现在要把所有的硬币翻转成反面朝上,规则是每次可翻转任意N−1枚硬币(正面向上的被翻转为反面向上,反之亦然)。求一个最短的操作序列(将每次翻转N-1枚硬币成为一次操作)。
输入格式
一个自然数N(N为不大于100的偶数)。
输出格式
第一行包含一个整数S,表示最少需要的操作次数。接下来的S行每行分别表示每次操作后桌上硬币的状态(一行包含N个整数(0或1),表示每个硬币的状态:0――正面向上,和1――反面向上,不允许出现多余空格)。
对于有多种操作方案的情况,则只需字典序最小输出一种。
输入输出样例
输入 #1
4
输出 #1
4
0111
1100
0001
1111
/* */
#include<stdio.h>
int main()
{
int t,i,n,j,a[100];
scanf("%d",&n);
for(i=1;i<=n;i++)
a[i]=0; // 刚开始都是正面向上
printf("%d\n",n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)//逐位翻转,翻转不是本位的其他位;翻转N次;;;;;;;啊哈
{
if(i!=j)
a[j]=1-a[j];
}
for(t=1;t<=n;t++)
printf("%d",a[t]);
if(i<=n-1)
printf("\n");
}
return 0;
}
找 数 字(good)
现有n个正整数,n≤10000,要求出这n个正整数中的第k个最小整数(相同大小的整数只计算一次),k≤1000,正整数均小于30000。
输入格式
第一行为n和k; 第二行开始为n个正整数的值,整数间用空格隔开。
输出格式
第k个最小整数的值;若无解,则输出“NO RESULT”。
输入输出样例
输入 #1
10 3
1 3 3 7 2 5 1 2 4 6
输出 #1
3
说明/提示
n≤10000
/* */
#include<stdio.h>
int main()
{
int n,t,i,j,a[10001],k,m;
scanf("%d %d",&n,&t);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
if(a[i]==a[j])
{
for(k=j;k<=n-1;k++)
a[k]=a[k+1];
n--;
j--;
}
}
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
if(a[i]>a[j])
{
m=a[j];#include<stdio.h>
超级玛丽(wdtmad)
#include<stdio.h>
int main() {
printf(
" ********\n"
" ************\n"
" ####....#.\n"
" #..###.....##....\n"
" ###.......###### ### ###\n"
" ........... #...# #...#\n"
" ##*####### #.#.# #.#.#\n"
" ####*******###### #.#.# #.#.#\n"
" ...#***.****.*###.... #...# #...#\n"
" ....**********##..... ### ###\n"
" ....**** *****....\n"
" #### ####\n"
" ###### ######\n"
"##############################################################\n"
"#...#......#.##...#......#.##...#......#.##------------------#\n"
"###########################################------------------#\n"
"#..#....#....##..#....#....##..#....#....#####################\n"
"########################################## #----------#\n"
"#.....#......##.....#......##.....#......# #----------#\n"
"########################################## #----------#\n"
"#.#..#....#..##.#..#....#..##.#..#....#..# #----------#\n"
"########################################## ############\n"
);
return 0;
}:
菜单不行的大数相加
#include<stdio.h>
#include<string.h>
int main()
{
char a[100],b[100];
int i,j=0,m,k,n;
gets(a);
gets(b);
m=strlen(a);
n=strlen(b);
k=(m>n)?m:n;
for(i=0;i<k;i++)
a[k-i]=a[m-1-i];
for(i=0;i<=k-m;i++)
a[i]='0';
for(i=0;i<k;i++)
b[k-i]=b[n-1-i];
for(i=0;i<=k-n;i++)
b[i]='0';
for(i=0;i<k;i++)
{
j=(a[k-i]+b[k-i]-96+j);
a[k-i]=j%10+48;
j=j/10;
}
if(a[0]=='0')
printf("%s\n",a+1);
else
printf("%s\n",a);
return 0;
}