Fewest operations to 100
JavaScript (ES6), 153 176 bytes
EDIT: In non-strict mode, JS interprets 0-prefixed numerical expressions as octal (e.g. 017 is parsed as 15 in decimal). This is a fixed version that supports leading zeros.


let f =

s=&gt;[...Array(3**(l=s.length,l-1))].map((_,n)=&gt;m=eval((x=s.replace(/./g,(c,i)=&gt;c+['','+','-'][o=(n/3**i|0)%3,j-=!o,o],j=l)).replace(/\b0+/g,' '))-100|j&gt;m?m:(S=x,j),m=l)&amp;&amp;m+' '+S

console.log(f("123456789"))
console.log(f("20172117"))