uva185
来源:互联网 发布:软件测试的工资待遇 编辑:程序博客网 时间:2024/06/06 17:36
//先判断给定的算式是否正确,这个首先要将罗马数字转化成阿拉伯数字
//第二就是看字母用0---9数字代入的时候算式是否成立,1有不可能成立,2只有一个可行解,3有大于等于2的可行解
#include <stdio.h>#include <string.h>#include <stdlib.h>int n,ok,final[50];int encode[]={1,5,10,50,100,500,1000},vis[50];char ss[100],code[]={"IVXLCDM"},str[50];int tonum(char *s){int i,j,temp=-1,res=0;for(i=0;i<strlen(s);i++){for(j=0;j<7;j++){if(code[j]==s[i]){if(temp==-1)res=temp=encode[j];else if(encode[j]>temp){res+=encode[j]-temp-temp;}else{res+=encode[j];temp=encode[j];}break;}}}return res;}void dfs(int x){int i,j;if(ok>1)return ;if(x==n){int x=0,y=0,sum=0;for(i=0;i<strlen(ss);i++){if(ss[i]=='+')break;for(j=0;j<n;j++)if(ss[i]==str[j])x=x*10+final[j];if(x==0)return ;}for(i=i+1;i<strlen(ss);i++){if(ss[i]=='=')break;for(j=0;j<n;j++)if(ss[i]==str[j])y=y*10+final[j];if(y==0)return ;}for(i=i+1;i<strlen(ss);i++){for(j=0;j<n;j++)if(ss[i]==str[j])sum=sum*10+final[j];if(sum==0)return ;}if(x+y==sum)ok++;return ;}for(i=0;i<=9;i++)if(!vis[i]){vis[i]=1;final[x]=i;dfs(x+1);vis[i]=0;}}main(){int i,sum,x,y,num;//freopen("D:\\u.txt","r",stdin);while(gets(ss)){if(strcmp(ss,"#")==0)break;num=x=y=sum=0;for(i=0;i<strlen(ss);i++){if(ss[i]=='+')break;str[num++]=ss[i];}str[num]='\0';x=tonum(str);num=0;for(i=i+1;i<strlen(ss);i++){if(ss[i]=='=')break;str[num++]=ss[i];}str[num]='\0';y=tonum(str);num=0;for(i=i+1;i<strlen(ss);i++)str[num++]=ss[i];str[num]='\0';sum=tonum(str);//printf("%d+%d=%d\n",x,y,sum);if(x+y==sum)printf("Correct ");else printf("Incorrect ");num=0;memset(vis,0,sizeof(vis));for(i=0;i<strlen(ss);i++){if(ss[i]=='='||ss[i]=='+')continue;if(vis[ss[i]-'A'])continue;str[num++]=ss[i];vis[ss[i]-'A']=1;}str[num]='\0';memset(vis,0,sizeof(vis));n=strlen(str);ok=0;dfs(0);if(ok>1)printf("ambiguous\n");else if(ok==1)printf("valid\n");else printf("impossible\n");}return 0;}
- uva185
- UVA185
- UVa185 - Roman Numerals
- uva185 - Roman Numerals
- Android import_includes export_includes
- 管程机制浅析
- 基于 canvas 将图片转化成字符画
- nyoj 127&&nyoj 170
- Git详解之 Git 标签
- uva185
- SHARP的LQ043Y1DX01
- 用JAVA代码获取Weblogic配置的JNDI 数据源连接
- 黑马程序员——面向对象(上)
- 按键从Linux到Android
- java编码笔记——身份证15升级18位
- ROS探索总结(十五)——amcl(导航与定位)
- derby环境配置和coolsql的连接
- window下用vs 2010编译v8源码详解