算法入门笔记------------Day4
1.WERTYU
输入一个错位后敲出的字符串,输出打字员本来想打出的字
#include<stdio.h>
char *s="`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./";
int main(void)
{
int i,c;
while((c=getchar())!=EOF)
{
for(i=1;s[i]&&s[i]!=c;i++); //这里用分号,搜索到字符前一个位置
if(s[i])
putchar(s[i-1]);
else
putchar(c);
}
return 0;
}
2.判断一个双引号是左引号还是右引号
#include<stdio.h>
int main(void)
{
int c,q=1;
while((c=getchar())!=EOF)
{
if(c=='"')
{
printf("%s",q?"zz":"yy"); //z代表左引号,y代表右引号
q=!q;
}
else
putchar(c);
}
return 0;
}
3.输出一个字符串的最小周期
#include<stdio.h>
#include<string.h>
int main(void)
{
char s[100];
scanf("%s",s);
int len=strlen(s);
for(int i=1;i<=len;i++) //枚举所有周期
if(len%i==0)
{
int ok=1;
for(int j=i;j<len;j++) //第二个周期的第一个字符开始比较
{
if(s[j]!=s[j%i]) //如果和之前的字符不匹配,则不是一个周期
{
ok=0;
break;
}
}
if(ok)
{
printf("%d\n",i);
break;//找最小的周期,就退出,如果去掉就是找所有周期
}
}
return 0;
}
4.小学生算式,两个数相加输出多少次进位
#include<stdio.h>
int main(void)
{
int a,b;
while(scanf("%d%d",&a,&b)==2)
{
if(!a&&!b) return 0;
int c=0,ans=0;
for(int i=9;i>=1;i--)
{
c=(a%10+b%10+c)>9?1:0;
ans+=c;
a=a/10;
b=b/10;
}
printf("%d\n",ans);
}
return 0; }
5.阶乘的精确值
#include<stdio.h>
#include<string.h>
//const int maxn=1000 全局变量数组长度要求在编译时确定,const并不是真正的常量,可能会被修改,所以要声明成define
#define maxn 3000
int f[maxn];
int main(void)
{
int i,j,n;
scanf("%d",&n);
memset(f,0,sizeof(f));
f[0]=1;
for(i=2;i<=n;i++)
{
int c=0;
for(j=0;j<maxn;j++)
{
int s=f[j]*i+c;
f[j]=s%10;
c=s/10;
}
}
for(j=maxn-1;j>=0;j--)
if(f[j]) break;
for(i=j;i>=0;i--)
printf("%d",f[i]);
printf("\n");
return 0;
}
6.6174问题
#include<stdio.h>
#include<string.h>
int num[2000],count;
int get_next(int x);
int main(void)
{
scanf("%d",&num[0]);
printf("%d",num[0]);
count=1;
for(;;)
{
num[count]=get_next(num[count-1]); //生成下一个输出数
printf("->%d",num[count]);
//在数组num中寻找新生成的数
int found=0;
for(int i=0;i<count;i++)
{
if(num[i]==num[count])
{
found=1;
break;
}
}
//如果找到,直接退出循环
if(found) break;
count++;
}
printf("\n");
return 0; }
int get_next(int x)
{
int a,b,n;
char s[100];
sprintf(s,"%d",x); //转化成字符串
n=strlen(s);
for(int i=0;i<n;i++) //冒泡排序
{
for(int j=i+1;j<n;j++)
if(s[i]>s[j])
{
char t=s[i];
s[i]=s[j];
s[j]=t;
}
}
sscanf(s,"%d",&b); //写入到数字b中
for(int i=0;i<n/2;i++) //字符串反转
{
char t=s[i];s[i]=s[n-1-i];s[n-1-i]=t;
}
sscanf(s,"%d",&a); //写入数字中a
return a-b;
}
7.字母重排
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n;
char word[2000][10],sorted[2000][10];
int cmp_char(const void * _a,const void *_b)
{
char *a=(char *)_a;
char *b=(char *)_b;
return *a-*b;
}
int cmp_string(const void * _a,const void * _b)
{
char *a=(char*)_a;
char *b=(char*)_b;
return strcmp(a,b);
}
int main(void)
{
n=0;
for(;;)
{
scanf("%s",word[n]);
if(word[n][0]=="*") break; //遇到结束终止循环
n++;
}
qsort(word,n,sizeof(word[0]),cmp_string); //给所有单词排序
for(int i=0;i<n;i++)
{
strcpy(sorted[i],word[i]);
qsort(sorted[i],strlen(sorted[i]),sizeof(char),cmp_char);
} //给每个单词排序
char s[10];
while(scanf("%s",s)==1) //持续读取到文件结尾
{
qsort(s,strlen(s),sizeof(char),cmp_char); //给输入单词排序
int found=0;
for(int i=0;i<n;i++)
{
if(strcmp(sorted[i],s)==0)
{
found=1;
printf("%s",word[i]); //输出原始单词,而不是排序后的
}
}
if(!found) printf(":(");
printf("\n");
}
return 0; }
8.cantor数集
#include<stdio.h>
int main(void)
{
int n;
while(scanf("%d",&n)==1)
{
int k=1,s=0;
for(;;)
{
s+=k;
if(s>n)
{
printf("%d/%d\n",s-n+1,k-s+n);
break;
}
k++;
}
}
return 0; }
9.因子和阶乘
#include<stdio.h>
#include<string.h>
int is_prime(int n)
{
for(int i=2;i*i<=n;i++)
{
if(n%i==0) return 0;
}
return 1;
}
int prime[100],count=0;
int main(void)
{
int n,p[100]; //n和各个素数的指数
for(int i=2;i<=100;i++)
{
if(is_prime(i)) prime[count++]=1;
}
while(scanf("%d",&n)==1)
{
printf("%d!=n",n);
memset(p,0,sizeof(p));
int max=0;
for(int i=1;i<=n;i++) //必须把i复制到变量m中,二不要在做除法时候修改它
{
int m=i;
for(int j=0;j<count;j++)
while(m%prime[j]==0)
{
m/=prime[j];
p[j]++;
if(j>max) max=j;
}
}
for(int i=0;i<=max;i++)
printf(" %d",p[i]);
printf("\n");
}
return 0;
}
算法入门笔记------------Day4的更多相关文章
- 算法入门笔记------------Day3
主要是复习前面的基本内容,以及函数的概念 组合数 #include<stdio.h> int f(int n) { int m=1; for(int i=1;i<=n;i++) m* ...
- 算法入门笔记------------Day2
1.开灯问题 有n盏灯,编号为1-n,第一个人把所有灯打开,第二个按下所有编号为2的倍数的开关(这些灯都被关掉),第三个人按下所有编号为3的倍数的开关,依次类推,一共有k个人,问最后有哪些灯开着?输入 ...
- 算法入门笔记------------Day1
1.C语言使用%d显示float值,不会把float值转换为近似的int值,而是显示垃圾值,使用%f显示int值,也不会把该int值转换为浮点值 2.三位数反转:输入一个三位数,分离它的百位,十位和个 ...
- Android NDK JNI 入门笔记-day04-NDK实现Hash算法
* Android NDK JNI 入门笔记目录 * 开头 前面的学习,我们已经掌握了 NDK 开发的必备知识. 下一步就要多实践,通过创造问题并解决问题,来增加熟练度,提升经验. 日常开发中,经常会 ...
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
- redis入门笔记(1)
redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...
- 「Android 开发」入门笔记
「Android 开发」入门笔记(界面编程篇) ------每日摘要------ DAY-1: 学习笔记: Android应用结构分析 界面编程与视图(View)组件 布局管理器 问题整理: Andr ...
- C++ 快速入门笔记:进阶编程
C++入门笔记:高级编程 文件和流 打开文件 void open (const char *filename, ios::openmode mode); ios::app 追加模式.所有写入都追加到文 ...
- golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web
micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go- ...
随机推荐
- MVC 之 T4模板简介
个人网站地址:nee32.com 一.T4模板内容简介 为了更好地学习T4模板,我们安装一个插件tangible T4 Editor 在使用了EF生成实体类后,我们会发现一个.tt后缀的文件,它就是T ...
- Sharif University CTF 2016 - Smooth As Silk
Category: Crypto Points: 200 Solves: 11 Description: p > q n = p*q = 1146153281852525177586999436 ...
- centos7安装数据库
centos7的yum源中貌似没有正常安装MySQL时的mysql-server. 那么就需要从官网下载了. 下面是安装mysql的命令: # wget http://dev.mysql.com/ge ...
- Delphi 中记录类型 给记录指针赋值。
PPersion=^TPersion; TPersion=packed record Name:string; Sex:string; Clasee:string; end ...
- table的遍历
1.for k,v in pairs (tbtest) do 这样的遍历顺序并不是tbtest中table的排列顺序,而是根据tbtest中key的hash值排列的顺序来遍历的 2.for k,v i ...
- Spring Framework------>version4.3.5----->Reference学习心得----->总结
1.Spring Framework概述: 有很多可用版本,网址http://projects.spring.io/spring-framework/ 2.Spring Framework ...
- Masonry控制台打印约束冲突问题解决
不知道你是不是视图的布局也是用的第三方Masonry,在使用中是不是也遇到了控制台约束冲突的警告打印,看下图: 从输出的信息可以知道,有的控件的约束明显重复了设置,所以指出了是哪个控件,重复设置了哪些 ...
- NPOI 2.0版本的使用
详细教程: http://blog.csdn.net/xxs77ch/article/details/50216033 using System; using System.Collections.G ...
- STM32 使用 FreeRTOS过程记录
资源:http://blog.csdn.net/zhzht19861011/article/category/6191478 资源:可以下载安富莱的STM32-V5开发版资料中的FreeRTOS教程, ...
- Light OJ 1031 - Easy Game(区间dp)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1031 题目大意:两个选手,轮流可以从数组的任意一端取值, 每次可以去任意个但仅 ...