题目描述:算法竞赛入门经典习题3-3 #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { ] ; memset(num,,) ; ]; scanf("%s",s) ; int n = strlen(s) ; ;i<n;i++) ;j<;j++){ '==j) num[j]++ ; } ;i<;i++){ printf("%d:%d\n&qu…
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char s[10000]; int a0 = 0, a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0, a7 = 0, a8 = 0, a9 = 0; scanf("%s", s); for (int i = 0; i < strlen(s); i++) { if (s[…
#include<stdio.h> #include<string.h> int main() { char s[100]; scanf("%s",s); int len = strlen(s); int a[10]; memset(a ,0 ,sizeof(a)); int i; for(i = 0;i < len;i++){ a[(s[i] - '0')] += 1; } for(i = 0;i < 10;i++){ printf("%…
思路: 利用java 特性,将数字从1 一直加到n,全部放到String中,然后依次对strring扫描每一位,使其carr[str.charAt(i)-'0']++; 最后输出carr[i],即可. 13 string=12345678910111213 carr[1]++.carr[2]++.carr[3]++....carr[1]++.carr[1]++.carr[1]++.carr[2]++.carr[1]++.carr[3]++ AC Code: import java.util.Sc…
1.题目大意 把前n$(n\le 10000)$个整数顺次写在一起:12345678910111213……计算0~9各出现了多少次. 2.思路 第一想法是打表,然而觉得稍微有点暴力.不过暂时没有想到更好的办法了,写完看了一下其它人的思路好像也差不多是打表的思路. 3.应注意的问题 (1)首先是格式问题,我第一次提交的时候PE了,因为没有意识到空格也会有影响.最开始我的最后一段代码是: for(i=0;i<10;i++) printf("%d ",s[n][i]); printf(…
Question 例题3-5 最小生成元 (Digit Generator, ACM/ICPC Seoul 2005, UVa1583) 如果x+x的各个数字之和得到y,就是说x是y的生成元.给出n(1<=n<=100000), 求最小生成元.无解输出0.例如,n=216,121,2005时的解分别是198,0,1979. Think 方法一:假设所求生成元记为m,不难发现m<n.换句话说,只需枚举所有的m<n,看看有木有哪个数是n的生成元.此举效率不高,因为每次计算一个n的生成元…
如果x加上x的各个数字之和得到y,就说x是y的生成元.给出n(1≤n≤100000),求最小 生成元.无解输出0.例如,n=216,121,2005时的解分别为198,0,1979. [分析] 本题看起来是个数学题,实则不然.假设所求生成元为m.不难发现m<n.换句话说,只需枚举所有的m<nn,看看有没有哪个数是n的生成元. 可惜这样做的效率并不高,因为每次计算一个n的生成元都需要枚举n-1个数.有没有更快的方法?聪明的读者也许已经想到了:只需一次性枚举100000内的所有正整数m,标记“m加…
解题思路: 1.将分子量用double 数组记录下来 2.将字符串存储在字符数组中,从头向后扫描,一直记住“字母”,对下一个字符进行判断,是否是数字,如果是数字:用一个整数记录,本代码中用的sum,同时下标++. 进行判断,查看是否对数字进行了记录,即查看sum是否进入了while循环并被赋值,如果没有被赋值,说明下一个字符不是数字,直接对W(总记录)值进行赋值,为当前字符的权值(分子量),即double数组的中的值.如果被赋值,说明字符后面是一个数字,sum中存放了该“数字”,也是对w赋值,不…
关键在于判断数字是两位数还是单位数,其他部分没有难度. #include"stdio.h" #include"string.h" #include"ctype.h" #define maxn 80 int main() { double a,b,sum; int T,m,i; char s[maxn]; scanf("%d",&T); while(T--) { scanf("%s",s); m=st…
#include<stdio.h> #include<string.h> #include<ctype.h> double getweight(char x) { double m=0; switch(x){ case 'C':m=12.01;break; case 'H':m=1.008;break; case 'O':m=16.00;break; case 'N':m=14.01;break; } return m; } int main() { int T; sc…